大佬教程收集整理的这篇文章主要介绍了iphone – 在哪里可以找到一个核心数据对多关系的好例子?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
EntityA{ name:string bees<-->>EntityB.a } EntityB{ name:string a<<-->EntityA.bees }
在EntityA中,关系蜜蜂是一组,因为关系中可能有很多EntityB对象.所以,使用Key-Value编码,你将不得不使用mutableSetForKey来访问关系:扩展所有内容以查看详细信息:
NSMutableSet *muteSet=[anEntityAObj mutableSETVALueForKey:@"bees"]; [muteSet addObject:aNewBObj]; [anEntityAObj SETVALueForKey:@"bees"];
…或更紧凑:
[[anEntityAObj mutableSETVALueForKey:@"bees"] addObject:aNewBObj];
但是,如果您从EntityB方面设置,则只需添加单个对象即可直接使用SETVALueForKey:
[anEntityBObj SETVALueForKey:anEntityAObj];
那就是使用通用的NsmanagedObject实例来表示你的实体.如果您创建自定义子类,那么您有属性和方法来为您设置:
[anEntityAObj addBeesObject:anEntityBObj]; anEntityBObj.a=anEntityAObj;
还要记住,通过管理对象,将关系定义为相对的一边自动设置为对方,并以相同的方式删除工作.
更新
您不会在属性中创建关系,在本例中为名称,而是与对象(在本例中为Person实体/类的实例).每个Person对象与其他所有Person对象完全分离,即使它们的name属性中的值相同.
您必须获得对任何特定Parent对象的引用.如果您刚刚插入了一个新的父对象,那么您已经有了它的引用.如果已经插入/持久化,那么您将创建一个带有谓词的fetch,该谓词将返回正确的对象.一旦你拥有正确的父对象,你只需要添加时间对象的关系.
Parent{ name:string times<-->>Time.parent } Time{ theTime:date parent<<-->Parent.times }
…并且您正在使用通用的NsmanagedObjects来设置您的实体,您可以设置现有的Parent对象和新的Time对象之间的关系,如下所示:
NsmanagedObject *exisTingParent= //... results of a fetch NsmanagedObject *newTime=[NSEntityDescription insertNewObjectForEntityForName:@"Time" inManagedObjectContext:self.moc]; [newTime SETVALue:[NSDate date] forKey:@"theTime"]; [newTime SETVALue:exisTingParent forKey:@"parent"];
请注意,如果从Time对象设置关系,则可以使用SETVALue:ForKey:因为从Time对象的角度来看,关系只是一个对象.
一旦您开始思考对象而不是数据库,这真的很简单.即使与同一实体/类的其他对象共享属性,在上下文中插入的每个对象都是唯一的.这就是为什么您可以设置特定对象之间的关系,而不必担心存储在其属性中的值.
以上是大佬教程为你收集整理的iphone – 在哪里可以找到一个核心数据对多关系的好例子?全部内容,希望文章能够帮你解决iphone – 在哪里可以找到一个核心数据对多关系的好例子?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。