如何访问 Algolia 索引和搜索属性?

How to access Algolia index and search properties?

我是一名 iOS Swift 开发人员,使用 Swift 5,我刚刚将我的 Algolia pod 从 pod 'AlgoliaSearch-Client-Swift', '~> 5.0' 更新为 pod 'InstantSearchClient', '~> 7.0'.

我将 headers 从 import AlgoliaSearch 更改为 import InstantSearchClient

一旦我这样做了,我就无法再访问 Algolia 数据类型:

docs 说:

let index = client.index(withName: "contacts")
index.search(Query(query: "s"), completionHandler: { (content, error) -> Void in
  if error == nil {
      print("Result: \(content!)")
  }
})

该页面上的任何地方都没有说明 clientdatatype 是什么,所以我胡乱猜测并使用:var index: Client! 有效。我有点困惑为什么该页面没有说明 Client 是一种数据类型。

无论如何,现在我可以访问 Client 我不再可以访问 indexsearch 属性:

如何访问 indexsearch 属性?

代码如下:

// import AlgoliaSearch // this is from the old pod
import InstantSearchClient

var index: Client! // before changing the pod I used AlgoliaSearch.Index! which worked fine
let query = Query()
var searchId = 0
var loadedPage: UInt = 0
var nbPages: UInt = 0

override func viewDidLoad() {
    super.viewDidLoad()

    let apiClient = Client(appID: "12345", apiKey: "ABC...XYZ")

    // *** error ***
    index = apiClient.index(withName: "myIndex")

    query.hitsPerPage = 15
    query.attributesToRetrieve = ["flavor", "color"]
}

func updateSearchResults(for searchController: UISearchController) {

    query.query = searchController.searchBar.text
    let curSearchId = searchId

    // *** error ***
    index.search(query, completionHandler: { [weak self] (data, error) in
    })
}

func loadMore() {

    if loadedPage + 1 >= nbPages {
        return
    }
    let nextQuery = Query(copy: query)
    nextQuery.page = loadedPage + 1

    // *** error ***
    index.search(nextQuery, completionHandler: { [weak self] (data , error) in
    })
}

Client 是错误的答案。

在旧的import AlgoliaSearch下我用了AlgoliaSearch.Index但是在新的import InstantSearchClient下我用了InstantSearchClient.Index

现在的声明是:

var index: InstantSearchClient.Index!

完整代码为:

import InstantSearchClient

var index: InstantSearchClient.Index! // this works :)

override func viewDidLoad() {
    super.viewDidLoad()

    // ...
}