我的程序需要操作数据库,现在我使用了“ 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; }
这是权限问题吗?
我的程序需要操作数据库,现在我使用了'FMDB'框架并关闭了xcode项目中的沙箱。但是我遇到了麻烦,这很奇怪:在我自己的计算机上,没有读写操作...
[运行应用程序时,您需要将文件包中的文件复制到文档目录中。