簡體   English   中英

COUNT(*)為EXC_BAD_ACCESS

[英]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 ,因此,只要您希望將intfloatNSIntegerNSUInteger等存儲在NSArrayNSMutableArray ,就需要將其轉換為對象。 NSNumber是為此目的而構建的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM