2015-05-08 2 views
0

У меня проблема с sqlite. У меня есть выбор из 2 varchars на нем и сохранить его в объекте. Когда я пытаюсь получить данные, только один из моих varchars имеет строку, которую я хочу. Другой - NSBlockVariable или nil.iOS сохранить sqlite select в NSobject

Отладка sqlite3, она отлично работает, и она идеально подходит, что мне нужно. Эти две переменные: имя и магазин

product.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 3)]; 
product.store = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; 

NSLog(@"name: %@", [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 3)]); 
NSLog(@"store: %@", [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]); 

я получаю:

//name: Sunglasses 
//store: RayBan 

Я объект, созданный, как это:

@interface ProductsCart : NSObject 
@property (nonatomic, assign) NSInteger idtrans; 
@property (nonatomic, assign) NSInteger idproduct; 
@property (nonatomic, assign) NSInteger idstore; 
@property (nonatomic, assign) NSString *name; 
@property (nonatomic, assign) NSString *store; 

И это, как я сохранить его в моем DAO:

NSMutableArray *productList = [[NSMutableArray alloc] init]; 
while(sqlite3_step(sqlStatement) == SQLITE_ROW) 
{ 
    ProductsCart *product = [[ProductsCart alloc] init]; 
     product.idtrans = sqlite3_column_int(sqlStatement, 0); 
     product.idproduct = sqlite3_column_int(sqlStatement, 1); 
     product.idstore = sqlite3_column_int(sqlStatement, 2); 

     product.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 3)]; 

     product.store = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; 

     [productList addObject:product]; 
    } 

В моей корзине классе У меня есть таблица, и это, как я получаю информацию о каждом ряде:

В viewdidload

self.products= [dao getProductList]; 

В cellForRowAtIndexPath

ProductsCart * productCart=[self.products objectAtIndex:[indexPath row]]; 

int idtrans=[[[self.products objectAtIndex:[indexPath row]] valueForKey:@"idtrans"] intValue]; 
NSString* name=[[self.products objectAtIndex:[indexPath row]] valueForKey:@"name"]; 
NSString* store=[[self.products objectAtIndex:[indexPath row]] valueForKey:@"store"]; 

На данный момент:

  • имя NSMutableString и содержит «Солнцезащитные очки»
  • Магазин NSObject, и он должен быть строкой

Я проверил сохраненную базу данных на симуляторе, и строки идеально подходят, поэтому проблема не в этом.

Если изменить порядок сохранения данных (магазин в Продукт.Название и имя в product.store):

product.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)]; 
product.store = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 3)]; 

Это то, что я получаю:

  • имя является NSMutableString и она содержит «RayBan»
  • магазин является NSObject, и она должна быть строка

в магазине, с ometimes Я получаю

store __NSCFString * @"star.count.singular" 0x00007fae62068e40 

Как я могу решить эту проблему ??

Большое спасибо!

ответ

0

Я решил это сохранить ответ sqlite в NSDictionary ... Я не знаю, почему, если я использую класс, он не работает

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