2012-06-01 123 views
1

我一直在與核心數據數據庫,並將其設置爲裝載一些數據出來使用下面的代碼的數據庫:核心數據錯誤executeFetchRequest:錯誤:

NSManagedObjectContext *context = [self managedObjectContext]; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AssignmentsInfo" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 
NSError *error; 
NSArray *dataReturn = [context executeFetchRequest:fetchRequest error:&error]; 
dataSet = dataReturn; 

NSFetchRequest *fetchRequestSubjects = [[NSFetchRequest alloc]init]; 
NSEntityDescription *entitySubjects = [NSEntityDescription entityForName:@"Subjects" inManagedObjectContext:context]; 
[fetchRequestSubjects setEntity:entitySubjects]; 
NSError *errorSubjects; 
NSArray *subjectList = [context executeFetchRequest:fetchRequestSubjects error:&errorSubjects]; 

但運行此代碼返回錯誤:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.' 

*第一擲調用堆棧: (0x16b1022 0x1842cd6 0xed3871 0x599a 0xe3a1e 0xe2fec 0x109f1d 0xf41cb 0x10adf1 0x10ae0d 0x10aea9 0x496f5 0x4973c 0x1a596 0x1b274 0x2a183 0x2ac38 0 x1e634 0x159bef5 0x1685195 0x15e9ff2 0x15e88da 0x15e7d84 0x15e7c9b 0x1ac65 0x1c626 0x32ed 0x2385爲0x1) 終止叫做拋出異常(LLDB)

我不明白爲什麼這個錯誤發生的事情。我有三重檢查,並且在我的xcode模型中沒有輸入錯誤。 managedObjectContext也完美地工作。感謝您的幫助

+0

你有一個實體叫做科目?我問,因爲看起來你更有可能擁有一個名爲「主題」的實體,而另一個實體與「主題」有關係,稱爲「主題」。 – sosborn

+0

Nah我已經三重檢查了名字。這絕對是科目 – CoreCode

+0

然後,你應該做什麼格拉弗說。使用調試器。 – sosborn

回答

2

嘗試:
1.調試,看看entitySubjectsnil
2.嘗試產品 - >清潔,產品展示 - >打造然後再嘗試運行時,如果它不能幫助
3。如果您添加了新的型號版本,則可能忘記將其設置爲「當前版本」,如果情況並非如此
4.您的數據可能已損壞,請嘗試刪除並再次運行
5.最後一次嘗試是再次重新創建你的模型,可能有什麼問題...

0

那麼看起來[NSEntityDescription -entityForName:...]的一個或兩個調用返回nil。

可能是因爲您的數據模型未正確加載或設置在託管對象上下文中。

1

確保您managedObjectContext非nil

0

如果你改變了你的屬性/實體之一的名稱,只是試圖刪除應用程序關閉設備的可能,你可以得到這個錯誤。一個很好的解決方法是從應用程序中刪除應用程序,並在構建和再次運行應用程序之前清理項目。只需確保在應用程序啓用後遷移數據,而不是簡單地更改事物。

另一種可能是,你可能會嘗試使用您的要求未設置你的思考方式的謂詞,例如我有這樣的:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", UserId]; 

當我的數據模型有這樣的字段集作爲「objectId」。確保它們匹配。祝你好運

0

在我的情況下,經過多次惡化後,我發現在數據模型配置中分配給實體的類已被刪除。在班級名稱中輸入刪除了錯誤。