NSEntityDescription和NSManagedObject

NSEntityDescription和NSManagedObject,第1张

概述1.NSEntityDescription和NSManagedObject 在CoreData中Model定义了数据存储的schema,包含一组data models,每一个data model对应一个NSEntityDescription对象,NSEntityDescription对象包含了Entity所拥有的属性,关系等信息,我们可以通过NSEntityDescription生成相应的NSMa 1.NSEntityDescription和NSManagedobject

在CoreData中Model定义了数据存储的schema,包含一组data models,每一个data model对应一个NSEntityDescription对象,NSEntityDescription对象包含了Entity所拥有的属性,关系等信息,我们可以通过NSEntityDescription生成相应的NSManagedobject的实体,

[c-sharp]  @L_404_0@ copy NSManagedobject *newObject=[NSEntityDescription                   insertNewObjectForEntityForname:@"Modelname"                        inManagedobjectContext:[self managedobjectContext]];    

这个时候newObject便是一个类型为Modelname的实体对象了。我们可以给对象通过kvc的接口添加属性值。
当然我们也可以写NSManagedobject的子类,然后声明属性,再通过@dynamic指令使得我们可以通过点运算符来设置属性值。

 

2.KVC

 

KVC即Key Value Coding的缩写,如果你使用过其他语言,你应该对Key-Value的结构比较了解的,如Java中的HashMap,python中的Dictionary,Js中的Json,这些内容都涉及到kv的知识。
在Objc里,NSkeyvalueCoding协议定义了kvc的相关内容,这个包含在NSkeyvalueCoding.h头文件中,NSObject实现了此协议。那KVC到底是什么样的呢?
我们都知道我们定义一个类,类有属性,然后我们可以通过accessor来获取属性或者设置属性的值,
比如一个老式的属性获取和设值方式:

copy [person name]   [person setname:@"Luke"]    

当我们使用kvc的方式的话,可以写成:

copy [person valueForKey:@"name"]   [person setValue:@"Luke"   forKey:@"name"]    

所以说从某种意义上说,kvc使得每一个对象都可以看成一个dictionary对象。 当通过kvc方式设置属性值的时候,会发送值被修改的通知,我们可以在别的地方捕获到这个通知,以便别的地方做相应的更新。Cocoa中的Binding便是这个原理,不过Cocoa中的很多控件通过绑定帮你省去了很多胶水代码。 Binding在MVC的程序中显得尤为有用,M到V之间的绑定,并通过C来控制协调。

总结

以上是内存溢出为你收集整理的NSEntityDescription和NSManagedObject全部内容,希望文章能够帮你解决NSEntityDescription和NSManagedObject所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055833.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存