2013-05-31 123 views
2

在我的應用程序中,我使用FMDB來查詢我的sqlite數據庫。我將變量從一個視圖傳遞到另一個視圖,最後所有選擇變量都用選定的值填充。在結果頁面上,我可以在標籤中顯示這些值。但是,當我將它們傳遞給FMDB來查詢數據庫時,我沒有收到任何返回的值。它崩潰並說數組是0,我知道它不是。將變量傳遞給FMDB的問題

下面的代碼示例。

- (NSMutableArray *) getChoices 
{ 
    NSMutableArray *choices = [[NSMutableArray alloc] init]; 
    FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]]; 
    [db open]; 

    NSString *capsChoiceOne = @"CHOICE 1"; 
    NSString *capsChoiceTwo = @"CHOICE 2"; 
    NSString *capsChoiceThree = @"CHOICE 3"; 
    NSString *capsChoiceFour = @"CHOICE 4"; 

    FMResultSet *results = [db executeQueryWithFormat:@"SELECT * FROM allitems WHERE choice1=%@ AND choice2=%@ AND choice3=%@ AND choice4=%@" 
         ,capsChoiceOne,capsChoiceTwo,capsChoiceThree,capsChoiceFour]; 

while([results next]) 
{ 
    Choices *choice = [[Choices alloc] init]; 

    choice.result = [results stringForColumn:@"result"]; 

    [choices addObject:choice]; 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Your Result" 
                message:choice.result 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 
} 

[db close]; 

return choices; 

現在上面的代碼將帶回警報視圖中的結果。但是,當我將其中一個值更改爲變量時,它會崩潰,並說我的數組中有0個結果。我已經將下面的代碼放在了我如何插入變量中。

NSString *capsChoiceOne = self.choiceOneSelected.uppercaseString; 

self.choiceOneSelected.uppercaseString包含與硬編碼版本相同但不起作用。

任何幫助將不勝感激。

謝謝

+0

一方面你將成果轉化的選擇,然後返回pipcodes。 –

+0

對不起,我以爲我已經改變了這個例子的所有代碼。謝謝你,我已經相應地修改了這個帖子。 – Flyingearl

回答

1

檢查self.choiceOneSelected.uppercaseString;究竟是不是nil

而且查詢有一些問題,你需要包裝內'

string值,以便使用:

FMResultSet *results = [db executeQueryWithFormat:@"SELECT * FROM allitems WHERE choice1='%@' AND choice2='%@' AND choice3='%@' AND choice4='%@'" 
         ,capsChoiceOne,capsChoiceTwo,capsChoiceThree,capsChoiceFour]; 
+0

嗨,謝謝你的建議,但不幸的是,在字符串周圍放置「'似乎打破了它。此外,我已經加入並且正在填充'self.choiceOneSelected.uppercaseString;'。它似乎沒有傳遞給查詢。 – Flyingearl

+0

@Flyingearl:千萬不要把「(雙引號)放'(單引號) –

+0

對不起,這是我的錯誤,我忘了在它們之間放一個空格,我使用的是單引號,對不起,因爲被誤導,我編輯了我的orignal回覆: – Flyingearl