swift - 核心数据不保存关系

标签 swift core-data

您好,我还有另一个关于核心数据的问题,我正在尝试保存一个名为 Date 的实体,它与另一个名为 Folder 的实体有关系。

enter image description here

下面是我保存实体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)

当我调试时,这是我看到的: enter image description here

但是当我执行以下代码列出属于特定文件夹的所有日期时,我得到 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。因此,现有 Datefolder 属性设置为 nil(这是您的提取显示的内容)。

如果您将关系重新定义为“对多”,CoreData 将为 dates 属性使用 NSSet,因此它可以跟踪多个不同的 Date 文件夹

关于swift - 核心数据不保存关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035236/

相关文章:

json - 可选的守卫语句在 swift 中为零

swift - 从 swift 字符串中删除时间戳

iphone - 核心数据 NSInvalidArgumentException 错误

ios - 核心数据不一致 - 获取有时不返回任何内容

swift - 如何通过 IF 检查字符串的 endIndex?

ios - 在 swift 3 中创建 View Controller 的单例

ios - 使用 restoreCompletedTransactions() 时没有得到任何响应

ios - AFIncrementalStore 的神奇记录

iphone - 核心数据: Get Objects with the highest value in each category

iphone - 在Xcode 3.2.2中创建NSManagedObject子类文件