您好,我还有另一个关于核心数据的问题,我正在尝试保存一个名为 Date 的实体,它与另一个名为 Folder 的实体有关系。
下面是我保存实体Date的代码:
if(occasion == nil){
occasion = NSEntityDescription.insertNewObjectForEntityForName("Date", inManagedObjectContext: handler.context!) as? Date
}
formatter.dateStyle = NSDateFormatterStyle.ShortStyle
occasion?.title = textFieldTitle.text
occasion?.date = formatter.dateFromString(textfieldDate.text)!
occasion?.occasion = textfieldOccasion.text
occasion?.notify = switchNotifyMe.on
occasion?.folder = folder!
handler.context?.save(&error)
但是当我执行以下代码列出属于特定文件夹的所有日期时,我得到 1;这是获取与特定文件夹相关的所有日期的代码:
var error: NSError?
var name: String = (folder?.name)!
var filter = NSPredicate(format: " folder.name = %@",name)
var handler: HACoreDataHandler = HACoreDataHandler()
var request = NSFetchRequest(entityName: "Date")
request.predicate = filter
dates = handler.context?.executeFetchRequest(request, error: &error) as! [Date]
如果我删除 NSPredicate,我会得到所有日期,这是因为属性文件夹 = nil。
知道我做错了什么吗?
在此先感谢您的帮助。
最佳答案
如果每个Folder
可以有多个Date
,你需要将dates
关系设置为“to many”。
当您设置Date
对象的folder
属性时,CoreData 设置对应的逆关系,即。设置 Folder
对象的 dates
属性。因为您已将其定义为“to one”,所以 CoreData 必须删除该文件夹的任何现有 Date
。因此,现有 Date
的 folder
属性设置为 nil(这是您的提取显示的内容)。
如果您将关系重新定义为“对多”,CoreData 将为 dates
属性使用 NSSet,因此它可以跟踪多个不同的 Date
文件夹
。
关于swift - 核心数据不保存关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035236/