我第一次尝试在iOS应用中使用CoreData框架,但遇到了一些麻烦。
我有一种复杂的数组类型,包含包含字典的元组:
TRUE
我创建了一个let DataSet: [( Float, Float, [String : String])] = ...
和一个NSManagedObjectContext
,我将NSManagedObject
数组添加到了DataSet
,但是当我尝试保存第一个NSManagedObject
时,该应用程序崩溃了。
使用普通数组不会发生这种情况,只有像上面的数组这样的复杂数组才会发生这种情况。
有没有办法解决这个问题?我需要调整我的xcdatamodel吗?
我将不胜感激。
答案 0 :(得分:0)
然后在Float实体和Dictionary之间创建“一对多”关系。看起来像这样
然后您需要将元组转换为这2个实体,
dataSet.forEach{ (member) in
let tuple = Test.(context: mainContext)
tuple.first = member.0
tuple.second = member.1
let dictionary = member.2
dictionary.forEach{ (key, value) in
let dick = Dick.(context: mainContext)
dick.key = key
dick.value = value
tuple.addToContains(dick)
}
}
最后,您需要保存值。
if mainContext.hasChanges {
do {
try mainContext.save()
} catch {
print(\(error))
}
}