2016-10-30 11 views
1

몇 가지 속성을 가진 데이터 모델 객체가 있습니다. 때로는 일부는 아니지만 모든 객체 속성이 포함될 동적 배열이 있습니다. 내가 안전하게 확인하려면 어떻게스위프트 : 인덱스에있는 객체에 대한 배열 검사

경우의 인덱스에 아무것도로 배열

DataModel이

class Order{ 
    var item0:String? 
    var item1:String? 
    var item2:String? 
} 

배열 :

var myArray = [String]() 

I가 확인 문제가있어 어디 문이 가드 다른 인덱스에있는 배열 안에 요소가 있는지 확인하십시오.

Btw 배열은 내부에 3 개 이상의 요소를 가질 수 없습니다.

let order = Order() 
order.item0 = "hat" 
order.item1 = "sneakers" 

myArray.append(order.item0) 
myArray.append(order.item1) 
//sometimes there may or may not be item2 

let placedOrder = Order 

//These guard statements aren't working 
guard case let placedOrder.item0 = myArray[0] else {return} 

guard case let placedOrder.item1 = myArray[1] else {return} 

//There isn't anything at myArray[2] but I need to safely check anyway 
guard case let placedOrder.item2 = myArray[2] else {return} 
+1

은'if myArray.count <3' 또는 무엇이든 – Paulw11

+1

배열을 사용하여 속성을 저장하지 않을 것입니다. 서로 다른 속성을 가진 ** 구조체 **를 만들 것입니다. – Honey

+0

@ Paulw11 나는 그것이 좋은 메카니즘이 아닐 것이라고 생각한다. 어떤 매개 변수가 nil인지 알기를 원할 수도 있기 때문에 ... – Honey

답변

0

배열은 데이터 모델 유형을 보유해야 1이 아니라 그 속성입니다 :

var orders = [Order]() 
//changed the array's name from myArray to orders instead 

2 배열에 데이터 모델 객체를 추가 배열을 통해

let orderOne = Order() 

orders.append(orderOne) 

3 루프 요소의 속성이 무효가 아닌지 확인하십시오.

for order in orders{ 

    if order.item0 != nil{ 
     //do something with order.item0 
    } 

    if order.item1 != nil{ 
     //do something with order.item1 
    } 

    if order.item2 != nil{ 
     //do something with order.item2 
    } 
}