У меня проблема с 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
Как я могу решить эту проблему ??
Большое спасибо!