2012-05-22 86 views
0

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

- (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我得到一个​​

某种程度上映射了,虽然工作,我得到的新模式让说在5次中有4次是有效的,第5次则在该行中引发错误。

任何想法如何解决它?

UPDATE我改变了代码一点,现在看起来像

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

回答

2

警告和错误是两回事。

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

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

+0

多数民众赞成在奇怪的......在苹果文档其BOOL成功= [psc addPersistentStoreWithType:<#商店类型#>配置:<#配置或零#> URL:storeURL选项:选项错误:&错误];' –

+0

从那 - 我的代码应该没问题? –

+0

我重写了我的代码 - 现在看起来更好吗? –