iOS Swift - 如何使用核心数据存储数组?
我是iOS开发新手,想知道应该指定哪种数据类型来存储多个字符串(数组)。该应用程序是与食物,我需要存储多个成分作为一个属性。iOS Swift - 如何使用核心数据存储数组?
我正在考虑将配料制作为实体,但我只是想让初学者变得简单。 我已阅读有关可变形类型,但人们似乎不建议使用它来存储数组。
警告:有预见的答案。
你不知道。
将数据存储在数组中并不会让您更轻松。相反,它会使事情变得更加困难,只需一个小时。想象一下,您想要显示包含选定成分的所有食谱。对于你的数组破解而言,这并不容易,使用合适的模型只需要几行代码。
我会建议使用与“加入实体”的良好的旧关系。
是的,这是比黑客的东西一起勉强工作更加复杂。但这是正确的方法。
你在想什么,正是你应该做的。核心数据是以数组结构的形式存储值。您应该创建实体成分,并将您的食品实体(或任何您想称之为)与成分实体关系连接起来。
谢谢:)我会采取适当的方式。 – 2015-03-13 10:04:38
但在哪里存储这些数据? – Martian2049 2017-08-28 13:01:41
有一种方法。您可以手动执行每个元素,例如 你有你的阵列:
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结果控制器获取所有元素
感谢您的建议。你是对的。我应该正确地做。 – 2015-03-13 10:05:46
如果我需要在联合实体中明确创建配方ID和成分ID的属性,您能告诉我吗?或者如果建立关系,xcode会自动处理它? – 2015-03-13 10:24:03
我明白你的意思是关于排序和显示搜索结果。但是,他现在是不是需要一组自定义ingrediet对象?我的应用程序需要一个字符串数组(并不会从上面的模型中受益),而且我仍然不知道如何存储数组。任何帮助? – Japes 2015-09-02 05:56:49