此代碼在iphone,ipad模擬器中都可以很好地工作在xcode 4.5
和xcode 4.6
之間。也可以使用xcode 4.5
中的設備完美調試。 但是當我試圖在xcode 4.6.2中調試設備時,則顯示此錯誤。Sqlite在ios SDK中顯示EXC_BAD_ACCESS
這是查詢
NSString *insertQuery=[NSString stringWithFormat:@"Insert into %@ (ID,Question,Answer,Option1,Option2,Option3,Explanation,ImageName,Used) values(%d,'%@','%@','%@','%@','%@','%@','%@','%@')",table,[[d objectForKey:@"ID"]intValue],[d objectForKey:@"Question"],[d objectForKey:@"Answer"],[d objectForKey:@"Option1"],[d objectForKey:@"Option2"],[d objectForKey:@"Option3"],[d objectForKey:@"Explanation"],[d objectForKey:@"ImageName"],@"N"];
NSLog(@"insert query-%@",insertQuery);
[database executeNonQuery:insertQuery];
這裏是其示出了EXC_BAD_ACCESS錯誤
- (BOOL)executeNonQuery:(NSString *)sql, ...
{
va_list args;
va_start(args, sql);
NSMutableArray *argsArray = [[NSMutableArray alloc] init];
NSUInteger i;
for (i = 0; i < [sql length]; ++i)
{
if ([sql characterAtIndex:i] == '?')
[argsArray addObject:va_arg(args, id)]; //This line shows error.
}
va_end(args);
BOOL success = [self executeNonQuery:sql arguments:argsArray];
[argsArray release];
return success;
}
感謝您的答覆..但我仍然混淆請給我一個例子如何直接傳遞查詢[數據庫executenonquery:...] – 2013-05-07 06:57:16
[數據庫executeNonQuery:@「INSERT INTO?VALUES(?,?,? ,?,?,?,?,?,?);「,table,[[d objectForKey:@」ID「] intValue],[d objectForKey:@」Question「],[d objectForKey:@」Answer「] ,[d objectForKey:@「Option1」],[d objectForKey:@「Option2」],[d objectForKey:@「Option3」],[d objectForKey:@「Explanation」],[d objectForKey:@「ImageName」] ,@ 「N」]; //我試過這個我是對的..? – 2013-05-07 07:10:44
這似乎是API的設計方式,是的。 – bbum 2013-05-07 14:56:09