2012-05-22 87 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

我重寫了我的代碼 - 現在看起來更好嗎? –