这很不错,但我在WWDC剪辑中注意到他们的示例中没有CoreDataPropertIEs.m文件.所以我尝试在我的代码中删除这些,并且所有内容都编译并在没有它们的情况下正常运行,它们似乎根本不需要.
它们是否以某种方式被我忽略了,或者如果没有,那么为什么xcode会产生它们呢?
解决方法 简短的回答:不,没有必要.
答案很长:
Objective-C是一种动态类型,后期绑定编程语言.在一个简短的形式中,这意味着每个类型的决策都可以在运行时而不是编译时进行,您可以访问一个属性并将消息发送到对象而无需知道其类型(类).
但是,对于Core Data框架而言,您并不需要作为Core Data的用户和您的模型来了解实体类型的托管对象的类型.甚至没有必要为实体类型设置特定类型. (我不经常生成类,如果我这样做,我会手动生成.)因此,与其他编程语言相比,这些生成的类不必为编译器提供类型.
但是,编译器希望至少看到每个方法至少有一次获得签名(参数类型).否则会发出警告.即使有可能像这样的工作代码……
NSManagedobject *person = …Nsstring *firstname = [person firstname];
…对于具有属性firstname的实体类型Person,编译器将警告您,他对方法-firstname一无所知.
相反,你可以键入这样的东西:
NSManagedobject *person = …Nsstring *firstname = [person valueForKey:@"firstname"];
(编译器知道-valueForKey :,因为这是在NSObject中声明的方法.)
除此之外,您还可以获得诸如代码完成,检查输入错误等优点.但是您不需要使用Xcode的代码生成工具.只需声明这样的类和界面上的属性.可以使用@dynamic动态生成访问器. (我个人几乎从不使用静态代码生成.)
编辑:在评论中添加了讨论结果.
因此,拥有该类别的接口(“.h-file”),编译器知道足够编译整个代码而没有警告.这将在运行时工作,如果有保证 – 或在运行时检查 – 可以分派相应的消息.从Objective-C的最开始,这在许多情况下都是有意义的.即用于转发和非正式协议.在Core Data的上下文中,它用于动态生成标准访问器方法.没有任何实现,一切正常.
但是,出于某些原因,我想要实现,i.即关于价值变化的内务管理.在这种情况下,有一个可以编辑的存根实现是很有用的.但对于标准行为,没有必要.
总结以上是内存溢出为你收集整理的objective-c – NSManagedObject子类生成的CoreDataProperties.m文件实际上并不需要?全部内容,希望文章能够帮你解决objective-c – NSManagedObject子类生成的CoreDataProperties.m文件实际上并不需要?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)