无法写入sqlite数据库

can't write to sqlite database

我的程序需要操作数据库,现在我在我的xcode项目中使用了'FMDB'框架并关闭了沙箱。

但是我遇到了一个麻烦,很奇怪:在我自己的电脑上,read/write操作是没问题的。 (存档为app后),但在另一台电脑上,只能读,不能写,为什么? (数据库在此应用程序的源文件夹中)。

问题不是找不到数据库文件,因为我在其他电脑上记录了数据库路径,是对的。

我的系统是"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;
}

是否是权限问题?

当你运行你的应用程序时,你需要将你的文件从包中复制到文档目录中。

if([[NSFileManager defaultManager] copyItemAtPath: databasePath 
          toPath:[documentsDirectory stringByAppendingPathComponent:@"CN_Characters.DB"]
          error:&error]){

否则为只读