0

こんにちは、CoreDataとOSX 10.8を使用してシンプルなアプリケーションを作成しました。これは、xcodeが作成するシンプルなテンプレートですが、BaseSDKを10.7xcodeに変更すると、AppControllerのこのメソッドで次のエラーが発生します。

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

NSManagedObjectModel *mom = [self managedObjectModel];
if (!mom) {
    NSLog(@"%@:%@ No model to generate a store from", [self class], NSStringFromSelector(_cmd));
    return nil;
}

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *applicationFilesDirectory = [self applicationFilesDirectory];
NSError *error = nil;

NSDictionary *properties = [applicationFilesDirectory resourceValuesForKeys:@[NSURLIsDirectoryKey] error:&error];

if (!properties) {
    BOOL ok = NO;
    if ([error code] == NSFileReadNoSuchFileError) {
        ok = [fileManager createDirectoryAtPath:[applicationFilesDirectory path] withIntermediateDirectories:YES attributes:nil error:&error];
    }
    if (!ok) {
        [[NSApplication sharedApplication] presentError:error];
        return nil;
    }
} else {
    if (![properties[NSURLIsDirectoryKey] boolValue]) {
        // Customize and localize this error.
        NSString *failureDescription = [NSString stringWithFormat:@"Expected a folder to store application data, found a file (%@).", [applicationFilesDirectory path]];

        NSMutableDictionary *dict = [NSMutableDictionary dictionary];
        [dict setValue:failureDescription forKey:NSLocalizedDescriptionKey];
        error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:101 userInfo:dict];

        [[NSApplication sharedApplication] presentError:error];
        return nil;
    }
}

NSURL *url = [applicationFilesDirectory URLByAppendingPathComponent:@"SimpleApp.storedata"];
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
if (![coordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:nil error:&error]) {
    [[NSApplication sharedApplication] presentError:error];
    return nil;
}
_persistentStoreCoordinator = coordinator;

return _persistentStoreCoordinator;
}

私はこのエラーを受け取ります:

ここに画像の説明を入力してください

どうすればいいですか?

4

1 に答える 1

2

これは実際にはCoreDataの問題ではありませんが、これはオブジェクトの添え字に関係しています。これらのリテラルが正しく機能するためには、SDKが少なくともOSX10.8またはiOS6である必要があります。

他に方法がない場合でも、必要なメソッドを実装するNSObjectのカテゴリにスタブヘッダーを追加することで、添え字を使用してSDKを10.7に保つことができます。ここでそのような例を1つ見ることができます。ただし、SDKを10.8のままにしておくことをお勧めします。

于 2012-10-28T23:18:27.407 に答える