2013-04-29 3 views
-1

SQLite DB를 사용하는 iOS 앱을 만들고 있습니다. 나는대로 표를 만들었습니다NSCocoaErrorDomain NSDATA에서 NSDATA를 가져 오는 동안 Code = 3840 문제가 발생했습니다.

const char *sql_stmt = "CREATE TABLE IF NOT EXISTS ORDERTABLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, ITEMDESC BLOB)"; 

후 나는 같은 삽입하고 ItemDESC 에 self.selectedItemsDictnory 사전을 삽입해야합니다 : 성공적으로 수행이 최대 개까지

NSData *data = [NSJSONSerialization dataWithJSONObject:self.selectedItemsDictnory options:NSJSONWritingPrettyPrinted error:nil]; 

NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO ORDERTABLE(ITEMDESC)VALUES(\"%@\");",data]; 

.

지금 내가

내가 뭐하는 거지 것은 같은 형식이 사전을 검색 할 수 있습니다

if (sqlite3_prepare_v2(orderDB, sqlStatement, -1, &statement, NULL) == SQLITE_OK) { 

    while (sqlite3_step(statement) == SQLITE_ROW) { 
     int uniqueId = sqlite3_column_int(statement, 0); 

     const void *blob = sqlite3_column_blob(statement, 1); 
     NSInteger bytes = sqlite3_column_bytes(statement, 1); 
     NSData *data = [NSData dataWithBytes:blob length:bytes]; 
     NSError *error; 

     NSMutableString *jsonObject=[NSJSONSerialization 
             JSONObjectWithData:data 
             options:NSJSONReadingMutableLeaves 
             error:&error]; 
     NSLog(@"jsonObject is %@ with error %@",jsonObject, error); 

    } 

    sqlite3_finalize(statement); 
    sqlite3_close(orderDB); 
} 

그리고 난 = 3840

오류 도메인 = NSCocoaErrorDomain 코드로 오류를 얻고있다 "작업을 완료 할 수 없습니다 (코코아 오류 3840.)"(JSON 텍스트 배열 또는 개체 및 옵션을 조각을 설정할 수 있도록 시작되지 않았습니다.)

+0

: 당신이 문자열을 원하는 경우

NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO ORDERTABLE(ITEMDESC)VALUES(\"%@\");",data]; 

이에서 : 당신은하지만 아래, 데이터 덩어리가 아닌 문자열이 이제

NSData *data = [NSJSONSerialization dataWithJSONObject:self.selectedItemsDictnory options:NSJSONWritingPrettyPrinted error:nil]; 

, 당신은 문자열로 처리 그리고 내가 삽입하는 내 NSDictionary는 예 : po self.selectedItemsDictnory $ 1 = 0x07184170 { 빛 = 50; 파스타 = 220; } 이 오류를 검색하려고했습니다. 내가 검색하는 JSON은 JSON 형식이 아님을 알게되었습니다. 입력 사항을 제공해주십시오. 감사합니다. – Sulabh

답변

1

JSON 속성의 서식을 지정하지 않았습니다.

NSString *jsonString = [NSString alloc] initWithData:data encoding: NSUTF8StringEncoding]; 
NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO ORDERTABLE(ITEMDESC)VALUES(\"%@\");",jsonString];