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

刚刚看到:)我会尝试,因为你建议 –