0

Core Data を使用してアプリで小さな辞書を作成しようとしています。Master-Detail アプリケーションを使用すると、ユーザーの Documents フォルダーに xxx.sqlite ファイルが作成されます。初めてアプリケーションを起動する前に、アプリに xxx.sqlite ファイルが必要だったので、コードを次のように変更しました。

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
}

    //NSURL *storeURL = [[self applicationDocumentsDirectory]
                               URLByAppendingPathComponent:@"CoreDataFileTest.sqlite"];

    NSString* path= [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"CoreDataTest.sqlite"];

NSURL* storeURL = [[NSURL alloc] initFileURLWithPath:path];

最後の 2 行で、アプリ プロジェクト フォルダーに xxx.sqlite ファイルが作成されると思いました。実際、そうではありませんでした。しかし、アプリは正常に動作します。これは、xxx.sqlite ファイルがアプリ自体に埋め込まれているということですか? お時間をいただきありがとうございます。

4

2 に答える 2

0

このコードで試してください。これをAppDelegate.m内に記述します

- (NSManagedObjectContext *) managedObjectContext {
    if (managedObjectContext != nil) {
        return managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator: coordinator];
    }

    return managedObjectContext;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }
    NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory]
                                               stringByAppendingPathComponent: @"ProjectManagement.sqlite"]];
    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
                                   initWithManagedObjectModel:[self managedObjectModel]];
    if(![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
                                                 configuration:nil
                                                           URL:storeUrl
                                                       options:nil error:&error]){
        /*Error for store creation should be handled in here*/
    }

    return persistentStoreCoordinator;
}

- (NSManagedObjectModel *)managedObjectModel {
    if (managedObjectModel != nil) {
        return managedObjectModel;
    }
    managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];

    return managedObjectModel;
}

- (NSString*)applicationDocumentsDirectory{
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
}
于 2013-07-29T03:56:26.277 に答える