gpt4 book ai didi

swift - 核心数据不保存关系

转载 作者:搜寻专家 更新时间:2023-11-01 05:39:45 26 4
gpt4 key购买 nike

您好,我还有另一个关于核心数据的问题,我正在尝试保存一个名为 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/

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