2011-07-06 77 views
3

在我的iPhone應用程序中,我正在閱讀一個csv文件。相關的行是這樣的:NSPredicate,帶引號/不含引號

NSString *countrycode = [[[NSString alloc] initWithFormat:@"%@", [arr objectAtIndex:2]] 
           stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

這返回「CN」(代表中國)。

當我這樣做:

NSLog(@"Manual: %@, country code: %@",@"CN",countryCode); 

我得到:

Manual: CN, country code: "CN" 

一個人的報價和其他沒有。我不知道這是爲什麼。

這是絆倒我的理由如下:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countrycode == %@ ", @"CN"]; 

這工作得很好,並從核心數據返回中國。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countrycode == %@ ", countrycode]; 

這不能返回任何東西。我假設這是因爲它引用了它或什麼的,雖然也許我是不正確的。

我在這裏做錯了什麼?

回答

-1

您的countryCode變量在讀回時必須包含引號。第一次分配文字@"CN"時,引號將被刪除,因爲它們指定您的變量是NSString。它們不是真的在文字字符串中。如果你想要第一個CN內部的字符串,你需要明確地指定引號。 @"""CN"""

不過,如果你想擺脫第二個字符串中的任何報價,你總是可以做到這一點的字符串把它變成你的謂語前:

[countryCode stringByReplacingOccurrencesOfString:@"""" withString:@""]; 
+0

嗯,這不是我想要在第一個CN裏面引用,這是我不希望它們在第二個CN裏面。我認爲。因爲它正在搞砸NSPredicate呼叫。對? – thekevinscott

+0

當你做一個'countryCode'的NSLog時,它是否包含引號? –

+0

是的,它沒有返回任何內容從核心數據 – thekevinscott