如何根据 Core-Data 实体和属性在搜索栏上进行搜索
How to search on a search bar on the basis of Core-Data entity and attribute
通过触发一个 API
,我得到了一个特定的标题列表,我将它们存储在一个数组中,就像这样..
self.arr1.updateValue(user, forKey: "title") and
self.sampleArray.append(self.arr1["title"] as! String)
现在 sampleArray
有我需要的所有标题,我需要根据这些标题进行过滤。我的核心数据模型有一个名为 Posts
的实体和属性 content
、title
.
此外,目前这就是我过滤的方式..
filtered = sampleArray.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
这里,sampleArray 只有一个名称列表,这些名称被添加到名为 'filtered' 的数组中。但问题是,在单击一行时,我们使用 segue 转到 webview,并且该 webview 在段落中有一些内容。单击每一行会显示具有不同数据的 Web 视图。通过我在上面进行的过滤,当我单击过滤后获得的行时,显示的 webview 数据不正确。换句话说,我无法弄清楚如何传递正确的数组以便显示正确的 webview 内容。
我的实体 'Posts' 具有属性 'title' 和 'content'。如果我可以过滤帖子然后从中获取标题,那么我想我也可以获取内容。但是我不知道这是怎么做到的。
单击过滤结果后适当的内容是什么意思??。通常,您可以使用 filteredArrayUsingPredicate 或 filter 方法过滤值列表。
您将仅根据属性进行搜索,而您将根据托管对象数组进行搜索。试试这个格式...
filtered = self.arrayOfYourManagedObjectType.filter { ([=10=].title?.lowercased().contains(searchText.lowercased()))! }
通过触发一个 API
,我得到了一个特定的标题列表,我将它们存储在一个数组中,就像这样..
self.arr1.updateValue(user, forKey: "title") and
self.sampleArray.append(self.arr1["title"] as! String)
现在 sampleArray
有我需要的所有标题,我需要根据这些标题进行过滤。我的核心数据模型有一个名为 Posts
的实体和属性 content
、title
.
此外,目前这就是我过滤的方式..
filtered = sampleArray.filter({ (text) -> Bool in
let tmp: NSString = text as NSString
let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return range.location != NSNotFound
})
这里,sampleArray 只有一个名称列表,这些名称被添加到名为 'filtered' 的数组中。但问题是,在单击一行时,我们使用 segue 转到 webview,并且该 webview 在段落中有一些内容。单击每一行会显示具有不同数据的 Web 视图。通过我在上面进行的过滤,当我单击过滤后获得的行时,显示的 webview 数据不正确。换句话说,我无法弄清楚如何传递正确的数组以便显示正确的 webview 内容。
我的实体 'Posts' 具有属性 'title' 和 'content'。如果我可以过滤帖子然后从中获取标题,那么我想我也可以获取内容。但是我不知道这是怎么做到的。
单击过滤结果后适当的内容是什么意思??。通常,您可以使用 filteredArrayUsingPredicate 或 filter 方法过滤值列表。
您将仅根据属性进行搜索,而您将根据托管对象数组进行搜索。试试这个格式...
filtered = self.arrayOfYourManagedObjectType.filter { ([=10=].title?.lowercased().contains(searchText.lowercased()))! }