2015-03-13 107 views
6

我是iOS開發新手,想知道應該指定哪種數據類型來存儲多個字符串(數組)。該應用程序是與食物,我需要存儲多個成分作爲一個屬性。iOS Swift - 如何使用核心數據存儲數組?

我正在考慮將配料製作爲實體,但我只是想讓初學者變得簡單。 我已閱讀有關可變形類型,但人們似乎不建議使用它來存儲數組。

回答

11

警告:有預見的答案。

你不知道。

將數據存儲在數組中並不會讓您更輕鬆。相反,它會使事情變得更加困難,只需一個小時。想象一下,您想要顯示包含選定成分的所有食譜。對於你的數組破解而言,這並不容易,使用合適的模型只需要幾行代碼。

我會建議使用與「加入實體」的良好的舊關係。

basic Recipe data model

是的,這是比黑客的東西一起勉強工作更加複雜。但這是正確的方法。

+1

感謝您的建議。你是對的。我應該正確地做。 – 2015-03-13 10:05:46

+0

如果我需要在聯合實體中明確創建配方ID和成分ID的屬性,您能告訴我嗎?或者如果建立關係,xcode會自動處理它? – 2015-03-13 10:24:03

+0

我明白你的意思是關於排序和顯示搜索結果。但是,他現在是不是需要一組自定義ingrediet對象?我的應用程序需要一個字符串數組(並不會從上面的模型中受益),而且我仍然不知道如何存儲數組。任何幫助? – Japes 2015-09-02 05:56:49

2

你在想什麼,正是你應該做的。核心數據是以數組結構的形式存儲值。您應該創建實體成分,並將您的食品實體(或任何您想稱之爲)與成分實體關係連接起來。

+0

謝謝:)我會採取適當的方式。 – 2015-03-13 10:04:38

+0

但在哪裏存儲這些數據? – Martian2049 2017-08-28 13:01:41

1

有一種方法。您可以手動執行每個元素,例如 你有你的陣列:

let employee: NSMutableArray = [] 

employee.addObject(["name":"Bill","LastName":"Hanks"]) 
employee.addObject(["name":"Rolex","LastName":"Swarzer"]) 
employee.addObject(["name":"Clive","LastName":"Martin"]) 
employee.addObject(["name":"Jimi","LastName":"Hendrix"]) 

假設你已經創建了實體「僱員」你coreData和屬性「名」和「姓氏」你以下信息才能增加它...

let appDel = UIApplication.sharedApplication().delegate as! AppDelegate 
let context = appDel.managedObjectContext 

for item in employee { 
    do { 
     let newUser = NSEntityDescription.insertNewObjectForEntityForName("Employee", inManagedObjectContext: context) 
     newUser.setValue(item["name"], forKey: "name") 
     newUser.setValue(item["LastName"], forKey: "lastname") 
     try context.save() 
    } catch { 
     //do nothing 
    } 

然後,您可以使用您的抓取請求或NSFetched結果控制器獲取所有元素