Swift 3 Core Data - 无法保存关系值

Posted

技术标签:

【中文标题】Swift 3 Core Data - 无法保存关系值【英文标题】:Swift 3 Core Data - Cannot Save Relational Value 【发布时间】:2016-11-02 21:22:35 【问题描述】:

我只是尝试保存数据时遇到错误。这就是我正在做的......

1) 首先我使用 Category 对象获取:

let categories: NSFetchRequest<Categories> = Categories.fetchRequest()
categories.predicate = NSPredicate(format: "id==%@", '25')
var category = try managedObjectContext.fetch(categories)[0]

2) 然后我在一个新的 Subcategories 对象上设置值:

let subcategory = NSEntityDescription.insertNewObject(forEntityName: "Subcategories", into: managedObjectContext) as! Subcategories
subcategory.text = "Some text..."
subcategory.categories = category

3) 最后我保存:

managedObjectContext.save()

***** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象”

Category 不是 nil,因为我可以在保存之前立即打印它。我认为 managedObjectContext 有问题。

【问题讨论】:

您是否检查了 subcategory.categories 和类别的类型?你的 subcategory.categories 是什么类型的? 你使用了 NSManagedObjectSubclassing 吗? 【参考方案1】:

我想通了。问题出在父实体“类别”上。我检查了一个框以将它们设置为“有序”,这由于某种原因导致了这个奇怪的错误。具体发生的是从我的查询返回的对象的类别字段始终为零。

【讨论】:

以上是关于Swift 3 Core Data - 无法保存关系值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Data 在 Swift 3 中保存和检索 MKAnnotations

如何在 Swift 中将可转换属性保存到 Core Data

在 Swift 中的 Core Data 中保存数据

Core Data 使用 Swift 保存数据

如何在 Swift 中的 Core Data 中保存多个项目

在 Swift 的 Core Data 中保存自定义类