轻量级迁移麻烦iOS

时间:2012-05-22 09:39:16

标签: objective-c ios core-data migration

我有点麻烦,我创建了我的上下文的新版本&使它成为默认的, 之后,我根据苹果文档更改了我的代码,现在看起来像这样:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{

    if (persistentStoreCoordinator != nil)
    {
        return persistentStoreCoordinator;
    }
    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"database.sqlite"];
    NSPersistentStoreCoordinator *psc = persistentStoreCoordinator;
    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                             [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];


    BOOL success = [psc addPersistentStoreWithType:NSSQLiteStoreType
                                     configuration:nil URL:storeURL
                                           options:options error:&error];
    if (!success) {
        NSLog(@"Unresolved Error");
        abort();
    }

    return persistentStoreCoordinator;
}

但是我收到错误,即使它是1:1相同的代码,在行BOOL sucess中我得到incompatible pointer to integer conversion 'BOOL' with 'NSPersistentstore'

某种程度上,映射已经起作用了,我得到了新模型,让我们说5次中有4次工作,第5次它会在该行中引发错误。

任何想法如何修复它?

更新我稍微更改了代码,现在看起来像

NSPersistentStore *store = [psc addPersistentStoreWithType:NSSQLiteStoreType
                                     configuration:nil URL:storeURL
                                           options:options error:&error];
if (!store) {
        NSLog(@"Unresolved Error");
        abort();
}

1 个答案:

答案 0 :(得分:2)

警告和错误是两个不同的事情。

警告是您将指针视为数字。 addPersistentStoreWithType:configuration:URL:options:error不会返回BOOL(实际上是一个数字),它会返回您正在创建的NSPersistentStore对象。您应该将结果分配给NSPersistentStore *变量而不是布尔成功变量。

如果失败,则返回nil并填充error对象。您可以从此对象获取有关错误的更多信息,例如记录其localizedDescription