一个managedobject是由一个objectContext来管理,有时候创建的managedobject如果不正确,在通过context存取数据时会出现一些无厘头的错误。
managedobject里一般只能包含基本的数据类型,例如:integer16,integer32,integer64,float,double,string,date,boolen,binary data等;
也可以包含其他的managedobject。包含其他的managedobject时需要确定两者的关系,例如,one-to-one,one-to-many。在一对多的关系中,可以用NSSet来表示那个多的对象。
下面是一个完整的例子:
.h文件
@interface Province : NSManagedObject
{
}
@property (nonatomic, retain) City *capital ;//managed object
@property (nonatomic, retain) NSString * name;//名字
@property (nonatomic, retain) NSSet * cities;//包含的城市
@end
@interface Province (CoreDataGeneratedAccessors)
-(void)addCitiesObject:(City*)value;
-(void)removeCitiesObject:(City*)value;
-(void)addCities:(NSSet*)value;
-(void)removeCities:(NSSet*)value;
@end
.m文件
@implementation Province
@dynamic name;
@dynamic capital;
@dynamic cities;
@end
还没有结束,在Model.xcdatamodeld面板里,需要将这些属性添加进来,非基本类型需要设置对象之间的关系,特别是one-to-many关系,一定要将 to-many relationship按钮勾上,否则,NSSet对象就没法操作了。
如果按以上步骤来做的话,应该就不会出现问题了。