【问题标题】:how to store [[string]] and get it from core data?如何存储 [[string]] 并从核心数据中获取它?
【发布时间】:2020-07-31 15:04:16
【问题描述】:

我有这样的 [[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]]?我对核心数据的插入是否错误?

【问题讨论】:

  • 为什么不做一个实体角色?

标签: ios swift xcode core-data transformable


【解决方案1】:

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

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

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

【讨论】:

  • 如果我按照角色 += hero.value(forKey: "roles") 作为? [[细绳]] ?? [[""]],它将打印所有空数组,但是在我尝试使用此角色.append(hero.value(forKey: "roles") as? [String] ?? [""]) 之后,它得到了所有保存的数组值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 2014-11-06
  • 2021-05-25
相关资源
最近更新 更多