2010-07-20 55 views
0

我試圖在創建單詞時創建「加權」字母列表。我有一個NSArray中的大量單詞列表。例如,我試圖獲取一個新的NSArray,其中只填寫了輸入前兩個字母的所有單詞的第三個字母。NSPredicate將單詞陣列過濾爲字母數組

到目前爲止,我有...

NSArray *filteredArray; 
if (currentWordSize == 0) { 
    filteredArray = wordDictionary 
} 
else { 
    NSPredicate *filter = [NSPredicate predicateWithFormat:@"SELF beginswith[cd] %@", filterString]; 
    filteredArray = [wordDictionary filteredArrayUsingPredicate:filter]; 
} 

這適用於把整個單詞到濾波陣列都好,但是這不正是我需要的。任何人都可以告訴我一種方法,只需填寫filteredArray,只需填寫wordDictionary的隨機NSString的第一,第二或第三個字母?

編輯:澄清我的問題。

回答

2

NSPredicate是不是你想用這個。 NSPredicate只根據一個或多個標準評估對象並返回yes/no結果,因此它不能用於執行實際操作正在測試的項目的事情。

搶陣列中的每個字符串的第三個字母,並把結果放在一個新的陣列會是這個樣子:

NSArray* wordDictionary; 
NSMutableArray* filteredArray = [[NSMutableArray alloc] init]; 

for (NSString* aString in wordDictionary) 
{ 
    if ([aString length] > 2) 
     [filteredArray addObject:[aString substringWithRange:NSMakeRange(2, 1)]]; 
    else 
     [filteredArray addObject:@""]; //there is no third letter 
} 
+0

我在別的刪除:) – willcodejavaforfood 2010-07-21 16:15:14

+2

如果你想借此更進一步,並使權重更加明確,您可以使用'NSCountedSet'來跟蹤每個字母在該位置使用多少次:http://developer.apple.com/library/ios/#documentation/可可/參考/基金/班/ NSCountedSet_Class /參考/的reference.html – 2010-12-10 07:24:23