每家餐厅都必须有经度和纬度。但是,每个LatitudeLongitude对象都不得有“餐厅”核心数据中的单向关系
所以我有一种单向关系并生成编译器警告。
有什么收获?
我应该用fetchRelationship代替吗?但是什么是fetchRelationship?
为什么是单向的?它为什么有谓词?为什么它被称为获取?我阅读了文档,似乎并没有得到它的真实性。
每家餐厅都必须有经度和纬度。但是,每个LatitudeLongitude对象都不得有“餐厅”核心数据中的单向关系
所以我有一种单向关系并生成编译器警告。
有什么收获?
我应该用fetchRelationship代替吗?但是什么是fetchRelationship?
为什么是单向的?它为什么有谓词?为什么它被称为获取?我阅读了文档,似乎并没有得到它的真实性。
您应该使用提取的属性(它是满足指定提取谓词的托管对象的集合)来表示单向关系。更多信息here。
更新
你或许应该使用属性,你的情况,否则你会在它的userInfo
已取得的属性添加到Restaurant
实体,设置它的目的实体LatitudeLongitude
和存储lattitude和经度键值对字典。它取谓词是这样的:
($FETCH_SOURCE.longitude LIKE [c] $FETCHED_PROPERTY.userInfo.longitude) AND ($FETCH_SOURCE.latitude LIKE [c] $FETCHED_PROPERTY.userInfo.latitude)
OK,超级老问题,但在这里是如何我会现在解决它。
并非所有的关系都必须填写。保持你的反向(双向)关系,但你不一定要把它们联系起来。
+ (void)createRestaurantWithCompletion:(void (^)(BOOL, NSError *))completion {
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Restaurant *localRestaurant;
LatitudeLongitude *localLatLng1;
LatitudeLongitude *localLatLng2;
restaurant = [Restaurant MR_createInContext:localContext];
localLatLng1 = [LatitudeLongitude MR_createInContext:localContext];
localLatLng2 = [LatitudeLongitude MR_createInContext:localContext];
restaurant.latLng = localLatLng1;
} completion:completion];
}
的时候completion
被调用时,都localLatLng1
和localLatLng2
存在,一个是与一间餐厅,一个不是。 当然这种方法在这种形式中没有意义,它只是为了证明您可以创建对象而不必满足它们之间的关系。
Z.
真的吗?但LatitudeLongitude对象具有什么谓词? – 2011-04-10 18:24:24
真的,那么LattitudeLongitude对象有什么谓词?另外每个餐厅应该只有一个LattitudeLongitude对象。事实上,我可能应该把它作为一个属性而不是一种关系。但是,我只是好奇。 – 2011-04-10 18:25:55
你说得对,如果你不需要'LatitudeLongitude'对象可以使用纬度和经度的属性。我已经更新了我的答案,如果您选择使用提取的属性,您会做什么。 – David 2011-04-11 00:11:27