我需要帮助,我尝试在我的 ios 应用程序中添加一个与 Cloudkit 一起使用的搜索栏
I need help, I try to add a search bar in my ios app that works with Cloudkit
我是 swift 世界的新手,我使用这种语言的时间很短。
我的问题是如何在使用 Cloudkit 的应用程序中放置 SearchBar,事实是我不知道该怎么做,我现在想念的 Searchbars 只能与 CoreData
一起使用
var prodsArray = [CoreSave]()
var searchController:UISearchController!
var searchResult = [CoreSave]()
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.sizeToFit()
tableView.tableHeaderView = searchController.searchBar
definesPresentationContext = true
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = true
searchController.searchBar.tintColor = UIColor.black
searchController.searchBar.barTintColor = UIColor.black
searchController.searchBar.placeholder = "Buscar Descripcion"
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchController.isActive {
return searchResult.count
} else {
return self.prodsArray.count
}
}
func filterContextForSearchTxt(searchText:String) {
searchResult = prodsArray.filter({
(prods: CoreSave) -> Bool in
let nameMatch = prods.descripsiob?.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return nameMatch != nil
})
}
使用这段代码,我在我的应用程序中实现了搜索栏,但我希望它能够在 cloudkit
中搜索
如果您可以针对 iOS 13 beta 进行开发,Apple 已经创建了一个可与 CloudKit 一起使用的 CoreData 适配器。待定我还没有看过。在这里查看:https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/setting_up_core_data_with_cloudkit
当我在 CloudKit 上构建后端时,我会使用带有特制 NSPredicate 的 CKQuery 进行搜索,以查找特定字段的对象模型。
从设计的角度来看,一定要注意发送查询的频率。如果你对查询和请求过于喋喋不休,Apple 可以而且会扼杀你。
例如,不要因每次字符更改时都执行新查询而陷入困境 CloudKit。您可以实施类似于每 3 个字符或从最后一个字符输入起每次暂停超过 x 秒的内容。
抱歉,我手边没有任何代码可以分享,但知道正确就成功了一半 类。希望这有帮助。
我是 swift 世界的新手,我使用这种语言的时间很短。 我的问题是如何在使用 Cloudkit 的应用程序中放置 SearchBar,事实是我不知道该怎么做,我现在想念的 Searchbars 只能与 CoreData
一起使用 var prodsArray = [CoreSave]()
var searchController:UISearchController!
var searchResult = [CoreSave]()
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.sizeToFit()
tableView.tableHeaderView = searchController.searchBar
definesPresentationContext = true
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = true
searchController.searchBar.tintColor = UIColor.black
searchController.searchBar.barTintColor = UIColor.black
searchController.searchBar.placeholder = "Buscar Descripcion"
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchController.isActive {
return searchResult.count
} else {
return self.prodsArray.count
}
}
func filterContextForSearchTxt(searchText:String) {
searchResult = prodsArray.filter({
(prods: CoreSave) -> Bool in
let nameMatch = prods.descripsiob?.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
return nameMatch != nil
})
}
使用这段代码,我在我的应用程序中实现了搜索栏,但我希望它能够在 cloudkit
中搜索如果您可以针对 iOS 13 beta 进行开发,Apple 已经创建了一个可与 CloudKit 一起使用的 CoreData 适配器。待定我还没有看过。在这里查看:https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/setting_up_core_data_with_cloudkit
当我在 CloudKit 上构建后端时,我会使用带有特制 NSPredicate 的 CKQuery 进行搜索,以查找特定字段的对象模型。
从设计的角度来看,一定要注意发送查询的频率。如果你对查询和请求过于喋喋不休,Apple 可以而且会扼杀你。
例如,不要因每次字符更改时都执行新查询而陷入困境 CloudKit。您可以实施类似于每 3 个字符或从最后一个字符输入起每次暂停超过 x 秒的内容。
抱歉,我手边没有任何代码可以分享,但知道正确就成功了一半 类。希望这有帮助。