我需要帮助,我尝试在我的 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 秒的内容。

抱歉,我手边没有任何代码可以分享,但知道正确就成功了一半 类。希望这有帮助。