2010-10-01 119 views
0

我有我導入到三個核心數據實體,它們分別是:核心數據 - 關係

•尺寸(姓名,衣服(一對多與「衣服」實體))
•服裝(名稱,價格,等... +2關係)
•店(名稱,衣服(一對多到「衣服」實體))

我已經導入的商店,到店和尺寸爲尺寸實體。

現在我正在導入衣服。在開始時,我會對尺寸和商店執行提取請求,並將它們存儲到數組中。

我正在循環所有的衣服和填充字典,然後我預測陣列的商店名稱和大小,以獲得每個託管對象,然後嘗試和存儲這對抗關係,它不起作用?

如果雖然我[arrShops objectAtIndex:x]並存儲它的作品?

預測有什麼問題我不能以任何其他方式獲得正確的託管對象?

或者還有另一種建立這種關係的方式?

感謝 詹姆斯

編輯


我有一個這樣的方法來獲取/謂詞店:嘗試存儲我這樣做的時候

- (void) getShops { 

NSManagedObjectContext *moc = [(ImportingAppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext]; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 

[fetchRequest setEntity:[NSEntityDescription entityForName:@"Shop" inManagedObjectContext:moc]]; 

NSError *error; 
arr_Manufacturers = [moc executeFetchRequest:fetchRequest error:&error]; 

NSLog(@"get: %@", [arr_Shops count]); 

[fetchRequest release]; 
} 

- (id) getShop:(NSString *)name { 

NSPredicate * predicate = [NSPredicate predicateWithFormat:@"Shop = %@", name]; 
return [arr_Shops filteredArrayUsingPredicate:predicate]; 

} 

然後:

moc_Clothes.Shop = [self getShop:@"Shop Name Variable"]; 
+0

您無法提供足夠的信息。發佈你的代碼(和你的謂詞)。完全描述*它如何不起作用。 – 2010-10-01 13:24:46

+0

這有幫助嗎? - 當應用程序崩潰並返回到彈簧板時它也不起作用。我會嘗試現在並得到錯誤,但我不認爲有一個? – jodm 2010-10-01 13:29:28

回答

0

首先,它看起來像你的屬性不是KVC compliant(重要)。

其次,您似乎需要解釋一個斷開連接:您正在篩選關係上的arr_Shops,但尚不清楚此數組來自哪裏。在你的getShops方法中(奇怪的是它實際上並沒有返回任何東西),你將所有Shop實例的結果分配給arr_Manufacturers。

我推薦一個名爲類似於--shopsWithName的方法,它需要一個字符串名稱並返回一組商店(總是允許多個結果的可能性)。在此方法中,您使用商店名稱謂詞運行獲取請求。

第三是謂詞本身。你要求Shop實例等於某個字符串。他們都不會是因爲他們是商店,而不是字符串。由於您的結果是Shop實例,因此您的謂詞應該匹配該實體的屬性。也許你的意思是「名字==%@」。

+0

應該在發佈前等待10分鐘; o) - 明白了! 首先,我知道我應該返回getShops,我很快衝過去,並且我可以創建一個屬性並手動創建getter/setter。 現在到我如何修復它...更改getShop返回到「NSArray」返回類型,而不是「ID」,然後做。 [[self getShop:@「Name」] objectAtIndex:0]; 現在已建立關係。 歡迎您的幫助! – jodm 2010-10-01 13:57:21