Я пытаюсь добавить некоторые данные из NSDictionary/NSArray
в мою базу данных. Мой проект использует sqlite/FMDB для этого. Но я получаю некоторую проблему: я не могу сохранить NSData
в моей базе данных.
Вот мой код:FMDB не вставляет NSData в таблицу
- (void)startSaveDB {
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *path = [self databasePath];
if ([fileManager fileExistsAtPath:path] == YES) {
FMDatabase *database = [FMDatabase databaseWithPath:path];
if (database) {
[database open];
[self createTableCacheApiWithDatabase:database];
[self saveAPIwithJsonData:jsonData withParam:params withUrl:url withMethod:method withDatabase:database];
}
[database close];
}
}
Создать таблицу:
- (void)createTableCacheApiWithDatabase:(FMDatabase*)database {
[database executeUpdate:@"create table if not exists APIENGINE_CACHE_TABLE (idx INTEGER NOT NULL DEFAULT 0 PRIMARY KEY AUTOINCREMENT, url Varchar NOT NULL, method Varchar NOT NULL, date_modified Varchar NULL, param BLOB NOT NULL, data BLOB NOT NULL);"];
}
Преобразование NSDictionary в NSData и сохранить:
- (void)saveAPIwithJsonData:(NSDictionary*)jsonData
withParam:(NSDictionary*)params
withUrl:(NSString*)url
withMethod:(NSString*)method
withDatabase:(FMDatabase*)database {
NSData *dataJson = [NSKeyedArchiver archivedDataWithRootObject:jsonData];
NSData *dataParams = [NSKeyedArchiver archivedDataWithRootObject:params];
if ([database open]) {
[database executeQuery:@"insert into APIENGINE_CACHE_TABLE (param, data, url, method) values (?, ?, ?, ?);", [NSData dataWithData:dataParams], [NSData dataWithData:dataJson], url, method];
}
}
Путь:
- (NSString *) databasePath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex: 0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:DATABASE_NAME];
NSLog(@"path: %@", path);
return path;
}
Wh at не так с моим кодом?
Привет, я получаю ту же проблему, что вы нашли что-нибудь .. Пожалуйста, обновите. –