2

我有这样的 [[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 SubClass

如何从核心数据中获取 [[string]]?我对核心数据的插入是否错误?

4

1 回答 1

0

我认为[[String]]正确存储在 CoreData 中。问题是你试图将它直接附加到roless:你可以附加类型的东西[String],但你不能附加类型的东西[[String]]。但是,您可以合并它们:

roless += hero.value(forKey: "roles") as? [[String]] ?? [[""]]

但我同意@JoakimDanielson 的评论:创建一个Role实体并为一对多关系建模而不是处理可转换对象可能是明智的。

于 2020-04-18T08:39:28.993 回答