ios - swift NSManagedObject 子类初始化问题

标签 ios core-data swift nsmanagedobject nsmanagedobjectcontext

我正在制作一个新的应用程序,我决定尝试快速开发它。 我正在使用 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/

相关文章:

ios - 为什么我们在swift中给可选值赋值时忽略感叹号?

ios - -[__NSCFNumber 计数] : unrecognised selector sent to instance 0x14539180 in Swift

cocoa - 关于 NSWindowController 和 NSPersistentDocument 核心数据教程的问题

ios - 以安全方式使用 websocket 的 Redis ios 客户端

ios - 在 macOS High Sierra 上获取默认 Realm 时崩溃

ios - xCode 删除的目标仍在项目中

objective-c - 如何从在线目录加载 UIImage 数组中的图像并将其存储在应用程序中

ios - 在保留 NSManagedObject 的同时保持它的最新状态

ios - 不工作 - 以编程方式在 Api 中注册用户

arrays - 尝试从 DocumentDirectory 路径获取图像时出错