2011-06-19 37 views
0
NSPredicate * thePredicate1= [NSPredicate predicateWithFormat: @"Title CONTAINS[cd] %@", searchTerm]; 

如果搜索關鍵詞是一個空字符串使用thePredicate1應該返回沒事搜索的直觀行爲?NSPredicate

錯誤。

如果是零,它會返回一個錯誤。

我的問題是我要創建一個特殊情況。所以如果Title是空的(或無),那麼我將不得不創建一個始終返回true的謂詞。因爲CONTAINS「」總是返回錯誤。

我認爲包含@ 「」 應該總是返回true。每個字符串包含一個空字符串

什麼是他們的考慮時,他們有這個問題?

+3

你的問題是混亂的。你傳遞一個空字符串還是'nil'?他們是不同的東西。 –

+0

如果我通過零,我得到一個錯誤。如果我傳遞一個空字符串,我得到0個結果,這也沒有意義。每個字符串都包含一個空字符串? –

+0

嗨,吉姆。我有同樣的問題。 當你來自C#,Java等其他語言時,..和你一樣思考是正常的。 我也期待空字符串的謂詞過濾器必須匹配所有字符串。 所以!結果是什麼 ?你能找到什麼嗎? 我試圖過濾字符串數組,我期待它整個數組返回回來時,我送一個空字符串作謂語過濾字符串。 必須 [NSPredicate predicateWithFormat:@「SELF CONTAINS [cd]%@」,searchTerm] 返回值與否。請幫助 ! – Add080bbA

回答

3
NSLog(@"%@", [NSPredicate predicateWithFormat:@"Title CONTAINS[cd] %@", @""]); 
NSLog(@"%@", [NSPredicate predicateWithFormat:@"Title CONTAINS[cd] %@", nil]); 

日誌:

2011-06-18 17:53:44.037 EmptyFoundation[11247:903] Title CONTAINS[cd] "" 
2011-06-18 17:53:44.040 EmptyFoundation[11247:903] Title CONTAINS[cd] nil 

什麼再次是你的問題? searchTerm是不是一個對象?

+0

因此,可以問@「」但不適用於零? –

+0

@Jim你可以在謂詞中使用'nil'就好了。例如,'title == nil'將是查找'title'屬性未被設置的所有對象的謂詞(不只是一個空字符串)。不過,我不確定'標題包含零'會做什麼。 –

+0

異常。此外,標題包含「」總是返回false我想是因爲我的表變空了 –

1

注意,對於類似的方法,+[NSString stringWithFormat:]的文檔,包含以下警告:

重要:引發一個 NSInvalidArgumentException如果格式 是零。