gpt4 book ai didi

ios - CoreData 无法生成 getter 和 setter

转载 作者:行者123 更新时间:2023-11-29 05:31:01 25 4
gpt4 key购买 nike

我有一个具有手动定义的类。这可以在下面看到。

class NewsFeedResponse: NSManagedObject, Cachable {

@NSManaged var id: String?
@NSManaged var cachedAt: Date?
@NSManaged var featuredArticles: Array<FeaturedArticle>?
@NSManaged var learningMaterials: Array<LearningMaterial>?

enum CodingKeys: String, CodingKey {
case featuredArticles
case learningMaterials
}

override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
super.init(entity: entity, insertInto: context)
}

required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
super.init(entity: NewsFeedResponse.entity(), insertInto: CoreDataManager.shared.getContext())
do {
self.cachedAt = Date()
self.featuredArticles = try container.decode(Array<FeaturedArticle>?.self, forKey: .featuredArticles)
self.learningMaterials = try container.decode(Array<LearningMaterial>?.self, forKey: .learningMaterials)
} catch {
print(error)
}
}

func encode(to encoder: Encoder) throws { }
}

在核心数据模型中,特色文章和学习 Material 在两个方向上都具有一对多关系。如果我将数组更改为集合,这不会崩溃使用集合的唯一问题是它们不像数组那样排序,因此数据的顺序不一致。还值得注意的是,我没有用 @objc 标记该类,因为如果我这样做,该对象似乎不会被持久化,这就是为什么它没有这个标记。

除此之外,每当我运行我的应用程序时,我都会遇到以下崩溃。

2019-08-20 09:51:07.265011+0100 [89304:24860419] [error] error: Property 'featuredArticles' is marked copy on class ‘XXXXX.NewsFeedResponse'.  Cannot generate a copying setter method for NSManagedObject's to-one relationship.
CoreData: error: Property 'featuredArticles' is marked copy on class 'XXXXXXX.NewsFeedResponse'. Cannot generate a copying setter method for NSManagedObject's to-one relationship.
2019-08-20 09:51:07.265235+0100 XXXXXXX[89304:24860419] -[XXXXXXX.NewsFeedResponse setFeaturedArticles:]: unrecognized selector sent to instance 0x600002d8afd0
2019-08-20 09:51:07.270994+0100 XXXXXXX[89304:24860419] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[XXXXXXX.NewsFeedResponse setFeaturedArticles:]: unrecognized selector sent to instance 0x600002d8afd0'

我不确定如何编写 coredata 提示的这些 setter。

最佳答案

多对关系必须声明为(最好是非可选)SetNSSet

@NSManaged var featuredArticles: Set<FeaturedArticle>
@NSManaged var learningMaterials: Set<LearningMaterial>

如果您需要订单,有以下三个选项:

  1. 将两种类型声明为 NSOrderedSet(没有 Swift 等效项)并选中模型中的 Arrangement: Ordered 复选框。
  2. 添加计算属性或方法以返回排序数组。
  3. 使用适当的谓词和排序描述符获取特定 NewsFeedResponse 的文章和 Material 。

关于ios - CoreData 无法生成 getter 和 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57570093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com