我在源代码中使用核心数据来实现数据持久性。该框架用于在我的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表示要抛出的异常。我该如何解决这个问题。请帮忙。每次项目运行之前我都会做一个干净的构建。
答案 0 :(得分:0)
从模拟器中删除应用程序并重新启动。正如其他海报所指出的那样,您很可能会更改数据库架构,现在拥有一个不兼容的数据库文件。
答案 1 :(得分:0)
stringByAppendingPathComponent
方法不会改变接收者(dbPath
),它会返回新值,所以这一行:
[dbPath stringByAppendingPathComponent:@"feed.db"];
什么都不做。您需要将返回值分配给新的路径字符串,并在后续代码中使用它:
NSString *newPath = [dbPath stringByAppendingPathComponent:@"feed.db"];