我有單元測試和核心數據同樣的問題:
首先,我碰到了「無法找到專賣店模式」。 Error running 'Cedar' unit tests from command line
其次,我得到了同樣的錯誤:我該用這個線程固定的「無法創建文件;代碼= 2」
然後我看了一下網址,發現:
的網址NSPersistentStoreCoordinator和NSManagedObjectModel非常不同。但只有當我進行單元測試時,只有在修復第一個錯誤之後。
通常的模式是 「/一些/路徑/ <DataModelFile>的.app/< DataModel的> .momd/
SQLite的是在」 一些/路徑/文件/ <SQLiteFile> .sqlite
所以我用下面的代碼來獲取兩個測試和運行正確的網址:
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSURL *modelURL = [bundle URLForResource:@"WinNav" withExtension:@"momd"];
basePath = @"";
NSArray *arr = [modelURL pathComponents];
for (int i=0; i<[arr count]-2; i++) {
basePath = [basePath stringByAppendingString:[arr objectAtIndex:i]];
if (i > 0) basePath = [basePath stringByAppendingString:@"/"];
}
NSLog(@"modelURL: %@", modelURL);
NSURL *storeUrl = [NSURL fileURLWithPath:[basePath stringByAppendingString:@"/Documents/Locations.sqlite"]];
如果我沒記錯的話,我必須要創造一個sqlite的文件存儲在「文檔」文件夾中。
任何意見/建議,如果這對你有用或如何做得更好,值得讚賞。
這對我有效,謝謝。小細節,您需要添加Documents/Locations.sqlite沒有/在前面。 – ggfela