내 iPHone 응용 프로그램에서 NSArray를 이와 같은 sqlite에 저장하고 있습니다.SQLite에 NSArray 저장 및 검색
-(void)saveData
NSData *dataFromArray = [NSKeyedArchiver archivedDataWithRootObject:MyArray];
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO ARRAY(PROFILE) VALUES (\"%@\")",dataFromArray];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(contactDB, insert_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
NSLog(@"Saved Succesfully");
}
else {
// NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(contactDB));
NSLog(@"Not saved %d",sqlite3_finalize(statement));
}
sqlite3_finalize(statement);
sqlite3_close(contactDB);
}
}
데이터가 성공적으로 저장되었습니다.
는 지금은 this--(void)fetchData{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat: @"SELECT * FROM ARRAY"];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
while(sqlite3_step(statement) == SQLITE_ROW)
{
NSString *MYstring = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
NSData* data = [MYstring dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"data---%@",data);
NSArray *myArrayFromDB = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
}
나는이
<62706c69 73743030 d4000100 02000300 04000500 0806cb06 cc542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d100 06000754 726f6f74 8001af11 022a0009 000a0017 00180019 001a0080 00810082 00830084 00850086 00870088 0089008a 008b008c 008d008e 008f0090 00910092 00930094 00950096 00970098 0099009a 009b009c 009d009e 009f00a0 00a100a2 00a300a4 00a500a6 00a700a8 00a900aa 00ab00ac 00ad00ae 00af00b0 00b100b5 00bd00c0 00c300c6 00c900cc 00cf00d2 00d500d8 00db00de 00e100e4 00e700ea 00ed00f0 00fd0105 0108010b 010e0111 01140117 011a011d 01200122 0127012a 012d0130 01330136 0139013c 013f0142 01450148 014b014e 01510154 0159015e 01610164 0169016f 018101a1 01a201a3 01a401a5 01a601a7 01a801a9 01aa01ab 01ac01ad 01ae01af 01b201b5 01b801bb 01be01c1 01c401c7 01ca01cd 01d001d3 01d601d9 01f901fa 01fb01fc>
처럼 "mystring에"대한 인쇄 값을 받고하지만 데이터에서있는 NSArray를 만들 때 사용하고 같은 저장된 데이터를 가져 오기 위해 시도 NSKeyedUnarchiver -이 오류를 표시하는 응용 프로그램이 손상되었습니다.
-[__NSCFData objectForKey:]: unrecognized selector sent to instance
어디서 실수를하고 있습니까? 저장된 배열을 검색하는 데 도움을주십시오. 미리 감사드립니다.
데이터를 다른 개체 유형으로 다시 변환해야합니다. '- [__ NSCFData objectForKey :] : 인스턴스로 보낸 인식 할 수없는 선택자 '는 NSData 객체에서'objectForKey' 메소드를 사용했다는 것을 알려줍니다. 아마 NSDictionary로 필요할 것입니다. – mah
NSLog ("% @", dataFromArray);를 실행하고 이스케이프 처리되지 않은 따옴표를 계산하십시오. –
위의 "인식 할 수없는 선택기"예외는 어디에서 왔습니까? 귀하의 업체 정보에서 색인을 생성하려고하지 않습니다. 'myArrayFromDB'에 대한 색인을 생성 중이거나'data' 색인을 생성하고 있습니까? –