2015-02-12 3 views
-1

Я пытаюсь вставить данные из json в sqlite3 с этими двумя методами, но это дает мне исключение - [NSDecimalNumber UTF8String]: непризнанный селектор, отправленный в экземпляр', пожалуйста, помогите мне я новичок в ИОС ..- [NSDecimalNumber UTF8String]: непризнанный селектор, отправленный в экземпляр '

-(void)insertintoDatabase:(NSMutableArray *)allCatData { for (int i=0;i<[allCatData count] ;i++) { CategoryData *catData=[allCatData objectAtIndex:i]; appdelegate.categoryString=catData.categoryname; NSLog(@"array size :%d",[catData.imageArraya count]); for (int j=0; j<[catData.imageArraya count]; j++) { imageconvert *convertedData=[catData.imageArraya objectAtIndex:j]; NSError* error = nil; NSData* thumbData = [NSData dataWithContentsOfURL: [NSURL URLWithString:[convertedData.thumbimage stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] options:NSDataReadingUncached error:&error]; // NSLog(@"aaaaa %@",[convertedData.thumbimage stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]); //NSLog(@"aaadata %@",thumbData); NSData* imageData = [NSData dataWithContentsOfURL: [NSURL URLWithString:[convertedData.mainimage stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] options:NSDataReadingUncached error:&error]; // NSLog(@"bbbbb %@",[convertedData.mainimage stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]); // NSLog(@"bbbdata %@",imageData); if (error) { NSLog(@"%@", [error localizedDescription]); } else { //insert date modified and categorynm into database [self SaveThumbDatatosql:thumbData withImageData:imageData WithCatName:catData.categoryname withImagename:convertedData.imageName withLastmodified:convertedData.lastmodified]; } } } } - (void) SaveThumbDatatosql:(NSData*) thumbData withImageData:(NSData*) imageData WithCatName:(NSString*) CategoryName withImagename:(NSString*) ImageName withLastmodified:(NSString*) Lastmodified { // NSLog(@"thumbData:%@ imageData:%@ CategoryName:%@ ImageName:%@ Lastmodified:%@",thumbData,imageData,CategoryName,ImageName,Lastmodified); sqlite3 *database; if (sqlite3_open([appdelegate.databasePath UTF8String], &database) == SQLITE_OK) { sqlite3_stmt *statement; const char* sqliteQuery = "INSERT INTO CategoryTable (ThumbImagePath,ImagePath,Categoryname,Imagename,Lastmodified) VALUES (?,?,?,?,?)"; if (sqlite3_prepare_v2(database, sqliteQuery, -1, &statement, NULL) == SQLITE_OK) { NSLog(@"CategoryName:%@ ImageName:%@ Lastmodified:%@",CategoryName,ImageName,Lastmodified); sqlite3_bind_blob(statement, 1, [thumbData bytes], [thumbData length], SQLITE_STATIC); sqlite3_bind_blob(statement, 2, [imageData bytes], [imageData length], SQLITE_STATIC); sqlite3_bind_text(statement, 3, [CategoryName UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(statement, 4, [ImageName UTF8String], -1, SQLITE_TRANSIENT); sqlite3_bind_text(statement, 5, [Lastmodified UTF8String], -1, SQLITE_TRANSIENT); sqlite3_step(statement); sqlite3_finalize(statement); NSLog(@"inserted "); } else { NSAssert1(0, @"error:'%s'", sqlite3_errmsg(database)); NSLog(@"not inserted "); } sqlite3_close(database); } }

+1

Пожалуйста, добавьте ** полное сообщение об ошибке ** на вопрос, скопируйте/вставьте лучше. – zaph

+0

*** Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [NSDecimalNumber UTF8String]: непризнанный селектор направил к экземпляру 0x175cbc00' *** Первого стек бросить вызов: (0x30f77f83 0x3b728ccf 0x30f7b917 0x30f7a203 0x30ec9768 0xbee53 0xc1575 0xc0ed9 0xc22f3 0x318b7fc3 0x318b7f07 0x318b7e21 0x30bde0e7 0x30bdccf7 0x30eab8f1 0x30b746bb 0x30b74579 0x30b7440d 0x30f4320b 0x30f42761 0x30f40ecf 0x30eabebf 0x30eabca3 0x35db1663 0x337f814d 0x95b89 0x3bc35ab7) LibC++ abi.dylib: оканчивающийся неперехваченным исключением типа NSException ошибка как этот –

+0

использовать более короткие, не сложные заявления с посредническими переменными и вам будет легче отлаживать ошибку - и понять код. – zaph

ответ

1

Похоже Lastmodified является NSDecimalNumber и на этом вы можете вызвать селектор UTF8String.

+0

Lastmodified - это также astring получить от json –

+0

@ DhananjayPatil, в какой строке вы получите ошибку? – Jens

+0

в методе SaveThumbDatatosql: в строке sqlite3_step (statement); –

Смежные вопросы