2011-11-03 53 views
2

我有一組對象,並且對於這個集合中的每個對象,我調用了一個內部有一個NSFetchRequest的方法。這個NSFetchRequest用於基於傳入方法的id獲取對象。對於我的每個對象,如果這是第一次在NSFetchRequest的謂詞中使用id,則會調用此方法,它會返回正確的對象,每次之後如果該id再次使用,則返回nil。我很困惑這一點,無法找到任何事情爲什麼會發生這種情況,或者我做錯了什麼。任何幫助將不勝感激。NSFetchRequest返回對象第一次運行,但不是後續時間

這裏是我的NSFetchRequest代碼:

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

[request setEntity:[NSEntityDescription entityForName:@"Styles" inManagedObjectContext:[self managedObjectContext]]]; 

[request setPredicate:[NSPredicate predicateWithFormat:@"style_id == %@", style_id]]; 

NSError *error = nil; 

Styles *r_styles = [[[self managedObjectContext] executeFetchRequest:request error:&error] lastObject]; 

[request release]; 

回答

1

我想通了我的問題。當我將它作爲NSNumber傳遞時,我傳遞了我的id作爲NSString。將其更改爲NSNumber解決了我的問題。

+0

你應該在這裏接受你的答案,所以問題顯示爲已回答。 – TechZen

1

你取的執行有一個零的兩個來源。如果發生錯誤,executeFretchRequest將返回nil。如果數組爲空,則lastObject將返回nil。

這段代碼沒有什麼特別的錯誤,但是如果你有問題,你應該總是捕獲一個提取的錯誤返回。這通常會告訴你問題的根源。

+0

我應該發佈我的更新代碼來捕獲錯誤,但我確實這樣做了,但我沒有收到錯誤消息。 – TrentinPriebe

+0

我知道nil可能來自哪個問題的地方在於,如果使用相同的id兩次,第一次獲取我期望的對象,第二次返回nil作爲謂詞中使用的相同值。 – TrentinPriebe

相關問題