我在一個應用程序中創建了一個核心數據庫,它涉及從API中抽取信息並填充數據庫。預加載核心數據數據庫不工作
我現在想在另一個應用程序中使用它。
我已經複製了.xcdatamodeld文件和NSManagedObject類。
我已經添加並導入了Core Data框架。
我已將.sqlite文件複製到我的新應用程序資源中作爲默認數據庫。
我正在使用下面的代碼,它應該將默認數據庫複製到Documents目錄並打開它,以便我可以對其執行查詢。
它導致應用程序崩潰,沒有錯誤信息,對我要去哪裏錯誤的任何想法?
如果我在這裏使用saveToURL創建數據庫,我知道文件名將是persistentStore而不是Trailer.sqlite,如下所示,是否相關?
感謝
- (void)viewDidLoad
{
[super viewDidLoad];
// Get URL -> "<Documents Directory>/<TrailerDB>"
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"TrailerDB"];
UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url];
// Copy out default db to documents directory if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:[url path]]) {
NSString *defaultDB = [[NSBundle mainBundle]
pathForResource:@"trailerdatabase" ofType:@"sqlite"];
if (defaultDB) {
[fileManager copyItemAtPath:defaultDB toPath:[url path] error:NULL];
}
}
if (doc.documentState == UIDocumentStateClosed) {
// exists on disk, but we need to open it
[doc openWithCompletionHandler:^(BOOL success)
{
if (success) [self useDatabase:doc];
if (!success) NSLog(@"couldn’t open document at %@", url);
}];
} else if (doc.documentState == UIDocumentStateNormal)
{
[self useDatabase:doc];
}
}
步通過與調試每一行,看看哪一個導致崩潰 – jackslash 2012-02-19 00:36:29
openWithCompletionHandler被調用,但崩潰... – Alan 2012-02-19 01:12:12