[英]COUNT (*) gives EXC_BAD_ACCESS
在使用SELECT語句執行SQLITE並使用COUNT(*)來計算該列的總數時,給了我EXC_BAD_ACCESS。 當將一個數組從一個數組添加到另一個數組時,它向我發送錯誤。 不知道為什么這樣做,但是有人遇到過這樣的問題可以提供幫助嗎?
-(void) title{
self.array = [[[NSMutableArray alloc] init] autorelease];
const char *query_stmt = "SELECT DISTINCT ID, KEY, COUNT (*) FROM TEST GROUP BY KEY";
if (sqlite3_prepare_v2(database, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
while(sqlite3_step(statement) == SQLITE_ROW)
{
NSString *ID = [NSString stringWithUTF8String:(char *) sqlite3_column_text(exhProduct_statement, 0)];
NSString *KEY = [NSString stringWithUTF8String:(char *) sqlite3_column_text(exhProduct_statement, 1)];
NSUInteger taskCount= sqlite3_column_int(exhProduct_statement, 2);
NSMutableArray *taskArray=[[NSMutableArray alloc]initWithObjects:ID, KEY, taskCount,nil] ; <--- Error
[self.array addObject:taskArray];
}
sqlite3_finalize(statement);
}
}
您需要將NSUInteger
更改為NSNumber
:
NSMutableArray *taskArray=[[NSMutableArray alloc]initWithObjects:ID, KEY, [NSNumber numberWithUnsignedInteger:taskCount],nil] ;
您以后可以使用
NSUInteger *retrievedTaskCount = [[taskArray objectAtIndex:2] unsignedIntegerValue];
這樣做的原因是NSArray
存儲了NSObject
,因此,只要您希望將int
, float
, NSInteger
, NSUInteger
等存儲在NSArray
或NSMutableArray
,就需要將其轉換為對象。 NSNumber
是為此目的而構建的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.