每家餐廳都必須有經度和緯度。但是,每個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