- 我已存儲
NSData
在本地數據庫。 - 我想從本地數據庫中使用它。但由於它作爲文本存儲在本地數據庫 中,因此在將其轉換回
NSData
時遇到問題。 - strDbData是
NSString
這裏的對象類型。
我有一個存儲在NSData
本地數據庫一樣<a3829c97 3b1efacb c7680f7e 7e7a95a2>
現在我想以檢索回來,所以我做如下提及,但我收到錯誤。
1)第一種方式
NSData *myData = (NSData*)strDbData;
NSLog(@"%@",[myData class]);
錯誤:-[__NSCFString AES256DecryptWithKey:]: unrecognized selector sent to instance 0x1ddcd9c0
2)方式二
NSData *myData = [[NSData alloc]initWithData:(NSData*)strDbData];
錯誤:-[__NSCFString bytes]: unrecognized selector sent to instance 0x1dd61a40
那麼,如何轉換NSData
sotred在本地數據庫作爲'文字'回到NSData
?
編輯
strDbData = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 6)];
EDIT 2貯藏NSData的數據庫
-(BOOL)updateSingleRow:(NSData*)myData
{
@try
{
BOOL success = NO;
sqlite3_stmt *statement;
const char *stmt = [[NSString stringWithFormat:@"UPDATE ABC SET XYZ = '%@' WHERE ID = 1 ",myData] UTF8String];
if (sqlite3_open([databaseFilePath UTF8String], &database) == SQLITE_OK)
{
if(sqlite3_prepare_v2(database, stmt, -1, &statement, NULL) == SQLITE_OK)
{
if(sqlite3_step(statement) != SQLITE_DONE)
{
NSLog(@"updateSingleRow Error: %s", sqlite3_errmsg(database));
}
else if (sqlite3_total_changes(database)>0)
{
success = YES;
}
else if (sqlite3_total_changes(database)==0)
{
NSLog(@"No Updates : %@" , query);
}
}
sqlite3_finalize(statement);
sqlite3_close(database);
}
return success;
}
@catch (NSException *exception)
{
TRACE_ERROR(@"updateSingleRow", exception.name, exception.description);
}
}
是什麼strDbData的類型?它是NSString嗎? –
如果你在數據庫中有NSData,那麼** NSString **'strDbData'是從哪裏來的? –
是這個字符串從哪裏來的? –