2016-03-02 56 views
0

我試圖將以下Objective-C方法轉換爲Swift,但我遇到了一些問題。將objective-c方法轉換爲swift [updateSearchResultsForSearchController]

我在使用謂詞時遇到了麻煩,因爲它在下面描述了Swift語法。

有人可以給我一個提示嗎?

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController { 

// filter the search results 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [cd] %@", self.controller.searchBar.text]; 
self.results = [self.data filteredArrayUsingPredicate:predicate]; 

// NSLog(@"Search Results are: %@", [self.results description]); 

}

問候,IC

+0

什麼是self.data? – sschale

+0

對不起......這是一個字符串數組 –

回答

1
let predicate = NSPredicate(format: "SELF contains[cd] %@", self.controller.searchBar.text!) 
results = data.filter({ item in 
    predicate.evaluateWithObject(item) 
}) 

或者一個更簡潔的解決方案:

let predicate = NSPredicate(format: "SELF contains[cd] %@", self.controller.searchBar.text!) 
results = data.filter { predicate.evaluateWithObject($0) } 
+0

我認爲這將工作 –

0

試試這個:

func updateSearchResultsForSearchController(searchController: UISearchController) { 
    let predicate = NSPredicate(format: "SELF contains [cd] %@", argumentArray: [self.controller.searchBar.text]) 
    self.results = (self.data as NSArray).filteredArrayUsingPredicate(predicate) 
} 
+0

數組屬性沒有filteredArrayUsingPredicate方法 –

+0

您可以將它轉換爲一個'NSArray'。看到我編輯的答案 –

+0

剛剛看到:)我會嘗試,因爲你建議 –