gpt4 book ai didi

ios - swift NSManagedObject 子类初始化问题

转载 作者:行者123 更新时间:2023-11-28 13:18:33 26 4
gpt4 key购买 nike

我正在制作一个新的应用程序,我决定尝试快速开发它。我正在使用 CoreData,我猜我有一个奇怪的行为。

我正在创建一个像这样的新项目(NSManagedObject 子类):

   let managedObjectContext: NSManagedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!

self.newItem = NSEntityDescription.insertNewObjectForEntityForName("Item", inManagedObjectContext: managedObjectContext) as Item

self.newItem.setValue(NSDate(), forKey: "startDate")

当我打印 startDate 时,它​​始终为零。它与项目的属性(链接到其他对象)相同。

在调试器中,对象 (newItem) 似乎被很好地实例化了(我看到一个 (myapp.Item!) 作为对象类型),但似乎调试器对 CoreData 并不是真正的用户友好。我找不到像在 Objective C 中那样检查或打印所有对象属性的方法。

我在这里缺少什么吗?这个实例对我来说似乎很正确,不是吗?

谢谢。

最佳答案

您在调试器中看到对象类型的事实并不意味着该对象已正确初始化。它很可能只显示您在定义 self.newItem 时在类中声明的类型。

我同意,Swift 调试器有很多不足之处。你不能依赖它来调试这种情况,除非你想学习更高级的调试器命令,但是如果你将日志语句插入到你的代码中,输入就一样多了。

检查并确认

  • 您的托管对象上下文不是nil
  • 您的插入方法确实创建了一个正确的 Item 对象,它不是 nil
  • Item 实体的托管对象子类已正确配置

也许您想先尝试创建一个新的本地 Item 变量,然后再将其分配给 self.newItem 以消除任何 ivar 错误。

如果您保存上下文,请尝试查看是否有任何变化。

尝试习惯使用子类属性访问属性,例如 newItem.startDate 而不是依赖容易出错的 valueForKey 方法。

关于ios - swift NSManagedObject 子类初始化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720004/

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