2016-10-30 10 views
1

У меня есть объект модели данных с несколькими свойствами. У меня есть динамический массив, который иногда имеет некоторые, но не все свойства объекта внутри него.Swift: проверка массива объекта по индексу

Как безопасно проверить, если массив, как и все на это индекс

DataModel

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

Массив:

var myArray = [String]() 

Стражник заявления, где я имею вопросы проверки, посмотрите, есть ли элементы внутри массива в разных индексах.

Btw в массиве никогда не будет более трех элементов внутри него.

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

первый массив должен держать тип модели данных, а не его свойства:

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

второй Добавить объект модели данных в массив:

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 
    } 
} 
Смежные вопросы