我的sqlite有问题。我有一个带有2个varchars的select并将其保存在一个对象中。当我试图获取数据时,我的varchars中只有一个具有我想要的字符串。另一个是NSBlockVariable或nil。
调试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];
}
在我的Cart类中,我有一个表,这就是我获取每行信息的方式:
在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"];
此时:
我在模拟器上检查了存储的数据库,行是完美的,所以问题不在它上面。
如果我更改保存数据的顺序(存储在product.name中的product.name和name中):
product.name = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 4)];
product.store = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 3)];
这就是我得到的:
在商店里,有时候我会
store __NSCFString * @"star.count.singular" 0x00007fae62068e40
我该如何解决这个问题?
非常感谢!!
答案 0 :(得分:0)
我解决了它将sqlite响应保存到NSDictionary中...我不知道为什么如果我使用它不起作用的课程