【发布时间】:2020-08-03 16:51:45
【问题描述】:
我的程序需要操作数据库,现在我使用了'FMDB'框架并关闭了我的xcode项目中的沙箱。
但我遇到了麻烦,很奇怪:在我自己的电脑上,读/写操作都没有问题。 (归档为应用程序后),但在另一台电脑上,它只能读,不能写,为什么? (数据库位于此应用的源文件夹中)。
问题不是找不到数据库文件,因为我在其他电脑上记录了数据库路径,没错。
我的系统是“Mac OS 10.15”,我在 Xcode 中使用的是版本“10.13”的 SDK。
读操作:↓
+ (charData *)getCharacteData:(NSString *)character
{
NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"CN_Characters" ofType:@"DB"];
FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
[db open];
FMResultSet *res = [db executeQuery:[NSString stringWithFormat:@"SELECT * FROM Proverbs WHERE character = '%@';",character]];
charData *charDta = [charData new];
if ([res next]) {
charDta.character = [NSString stringWithString:[res stringForColumn:@"character"]];
charDta.explanation = [NSString stringWithFormat:@"%@",[res stringForColumn:@"explanation"]];
} else {
return NULL;
}
[db close];
return charDta;
}
写操作:↓
+ (BOOL)saveCharacterDataWithCharacter:(NSString *)character Explanation:(NSString *)explanation
{
NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"CN_Characters" ofType:@"DB"];
printf("databasePath: %s\n",databasePath.UTF8String);
FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
[db open];
BOOL res = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Proverbs SET explanation = '%@' WHERE character = '%@'",explanation,character]];
[db close];
return res;
}
是权限问题吗?
【问题讨论】:
标签: objective-c database sqlite fmdb