我有一個從Core Data中執行的提取結果返回的NSManagedObject類型的對象的NSArray。 NSArray包含對象,因爲我可以在查詢之後通過將NSArray的內容打印到控制檯來驗證它。然而,我的問題是,我無法使用從查詢中檢索到的實體類型的對象對此數組進行快速枚舉。我在運行時得到確切的錯誤是:從iOS Core Data中的實體NSArray快速枚舉時得到運行時錯誤
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[My_Entity_Name countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0xa9f0090'
我的for循環,我使用甚至沒有得到運行,因爲它打破了在for循環條件:
for (MyEntityType *entityType in self.entityArray) {
...
}
的實際取命令我使用填充陣列self.entityArray是:
self.entityArray = [[Singleton sharedInstance] retrieveEntities:self.mainEntity.relationshipEntity.relationshipEntityId];
反過來,這是我retrieveEntity方法看起來像:
- (NSArray *)retrieveEntities:(NSNumber *)relationshipEntityAttributeId {
NSManagedObjectContext *context = [[DataEngine sharedInstance] managedObjectContext];
NSError *error;
// Create fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:ENTITY_NAME inManagedObjectContext:context];
[fetchRequest setEntity:entity];
// Create predicate
NSPredicate *pred = [NSPredicate predicateWithFormat:@"relationshipEntity.relationshipAttributeId == %@", relationshipEntityAttributeId];
[fetchRequest setPredicate:pred];
NSArray *items = [context executeFetchRequest:fetchRequest error:&error];
if ([items count]>0) {
return items[0];
} else {
return nil;
}
}
任何人都可以看到爲什麼我得到上述錯誤?
在此先感謝所有回覆的人。
添加的代碼並沒有真正的幫助,因爲它使用了方法'retrieveEntity',這對我們來說是未知的(至少對我而言)。 –
我已更新代碼以包含其他方法。 – syedfa