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