可可错误(256)

时间:2015-05-09 18:44:11

标签: objective-c cocoa-touch core-data

我在源代码中使用核心数据来实现数据持久性。该框架用于在我的RSS feed应用程序中保留所有链接到同一iCloud帐户的不同设备的偏好。

RewriteEngine On
RewriteBase localhost/~username/apiproject
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

控制台出错 -

    -(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;
    }

显然,从错误中可以看出执行在" if(![psc addPersistentStoreWithType:.. configuration:.. URL:.. options:.. error])"因为此消息返回0表示要抛出的异常。我该如何解决这个问题。请帮忙。每次项目运行之前我都会做一个干净的构建。

2 个答案:

答案 0 :(得分:0)

从模拟器中删除应用程序并重新启动。正如其他海报所指出的那样,您很可能会更改数据库架构,现在拥有一个不兼容的数据库文件。

答案 1 :(得分:0)

stringByAppendingPathComponent方法不会改变接收者(dbPath),它会返回新值,所以这一行:

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

什么都不做。您需要将返回值分配给新的路径字符串,并在后续代码中使用它:

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