2015-05-09 14 views
0

Я использую основные данные в своем исходном коде для сохранения данных. Рамка используется для сохранения некоторых настроек в моем приложении для RSS-каналов на разных устройствах, связанных с одной учетной записью iCloud.Ошибка какао (256)

-(id)init{ 
     if (self= [super init]) { 
      model= [NSManagedObjectModel mergedModelFromBundles:nil]; 

      NSPersistentStoreCoordinator *psc= [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model]; 

       NSError *error= nil; 
       NSString *dbPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
      [dbPath stringByAppendingPathComponent:@"feed.db"]; 
       NSLog(@"%@",dbPath); 
       NSURL *dbURL= [NSURL fileURLWithPath:dbPath]; 

      if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dbURL options:nil error:&error]) { 
       [NSException raise:@"Open failed" format:@"Reason: %@",[error localizedDescription]]; 
      } 

      context= [[NSManagedObjectContext alloc] init]; 
      [context setPersistentStoreCoordinator:psc]; 

      [context setUndoManager:nil]; 
      } 
      return self; 
    } 

Ошибка в Console-

2015-05-08 23:15:03.963 Nerdfeed4[1023:22906] CoreData: error: -  addPersistentStoreWithType:SQLite configuration:(null) 

    URL:file:///Users/Rahul/Library/Developer/CoreSimulator/Devices/28EDC37B-E3AA- 442F-A1B1-72AD385563D5/data/Containers/Data/Application/BF11CCC0-0B2C-4537-BAB6- E27E2C84CC4C/Documents/ options:(null) ... returned error Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa  error 256.)" 

    UserInfo=0x7a092c70 {NSUnderlyingException=unable to open database file,  

    NSSQLiteErrorDomain=14} with userInfo dictionary { 
    NSSQLiteErrorDomain = 14; 
    NSUnderlyingException = "unable to open database file"; 
    } 
    2015-05-08 23:15:03.977 Nerdfeed4[1023:22906] *** Terminating app due to uncaught exception 'Open failed', reason: 'Reason: The operation couldn’t be completed. (Cocoa error 256.) 

Очевидно от ошибки, можно понять, что выполнение останавливается на «, если ([PSC addPersistentStoreWithType: .. конфигурация: .. URL: .. options: .. error]) ", потому что это сообщение возвращает 0 для генерируемого исключения. Как я могу решить эту проблему? Я делаю чистую сборку каждый раз перед запуском проекта.

+0

, если это помогает «ошибка какао 256» является 'NSFileReadUnknownError = 256, // Ошибка чтения (причина неизвестна)' , –

+0

Вы недавно вносили изменения в свою модель управляемых объектов? –

+0

@RASS Какие изменения вы имеете в виду? – rahulbsb

ответ

0

Метод stringByAppendingPathComponent не мутировать приемник(), он возвращает новое значение, так что эта строка:

  [dbPath stringByAppendingPathComponent:@"feed.db"]; 

ничего не делает. Вам необходимо присвоить возвращаемое значение новой строки пути, и использовать его в последующем коде:

NSString *newPath = [dbPath stringByAppendingPathComponent:@"feed.db"]; 
0

Удалите приложение из тренажера и перезапустите. Как было указано другими плакатами, вы, скорее всего, измените схему базы данных и теперь имеете несовместимый файл базы данных.

Смежные вопросы