2015-05-08 34 views
0

我有一個與sqlite的問題。我有一個選擇與2 varchars它並將其保存在一個對象。當我試圖獲取數據時,只有一個varchars具有我想要的字符串。另一個是NSBlockVariable或nil。iOS保存sqlite在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"]; 

此時:

  • name是一個NSMutableString,它包含「太陽眼鏡」
  • 商店是一個NSObject,它必須是一個字符串

我在模擬器上檢查了存儲的數據庫,行是完美的,所以問題不在它上面。

如果我更改順序保存(在product.store product.name和名稱存儲)中的數據:

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

這就是我得到:

  • 名稱是的NSMutableString和它包含「雷朋」
  • 存儲是一個NSObject的,它必須是一個字符串

在商店,S ometimes我得到

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

我該如何解決這個問題?

非常感謝!

回答

0

我解決了它將sqlite響應保存到NSDictionary中......我不知道爲什麼如果我使用一個類它不起作用