我有[[string]]的样本数组,像这样[[“A”,“B”,“C”],[“A”],[“B”,“C”],[“C”],[ “B”],[“B”,“C”,“A”]]
我将其存储到这样的核心数据中:
insertHeroes.setValue(roless, forKey: "roles")
哪个角色是API的数组结果(在附加循环之后),带有
var roless = [[String]]()
核心数据存储在列表
var coreHeroList: [NSManagedObject] = []
中但是当我尝试从核心数据中获取并存储它(在removeall之后)时,像这样:
if (coreHeroList.count > 0) {
for hero in coreHeroList {
roless.append(hero.value(forKey: "roles") as? [[String]] ?? [[""]])
}
}
它给出红色错误:无法将类型[[[String]]'的值转换为预期的参数类型'[String]'
我的变形是这样的:
我将核心数据设置为手动,并且已经设置了NSManagedObject子类
如何从核心数据中获取[[string]]?我插入核心数据是否错误?
最佳答案
我认为[[String]]
已正确存储在CoreData中。问题是您试图将其直接附加到roless
:您可以附加[String]
类型的东西,但不能附加[[String]]
类型的东西。但是,您可以将它们合并:
roless += hero.value(forKey: "roles") as? [[String]] ?? [[""]]
但是我同意@JoakimDanielson的评论:创建
Role
实体并为多对多关系建模而不是处理可转换对象可能是明智的。
关于ios - 如何存储[[string]]并从核心数据中获取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61283029/