如何访问 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!)")
}
})
该页面上的任何地方都没有说明 client
的 datatype
是什么,所以我胡乱猜测并使用:var index: Client!
有效。我有点困惑为什么该页面没有说明 Client
是一种数据类型。
无论如何,现在我可以访问 Client
我不再可以访问 index
或 search
属性:
如何访问 index
和 search
属性?
代码如下:
// 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()
// ...
}
我是一名 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!)")
}
})
该页面上的任何地方都没有说明 client
的 datatype
是什么,所以我胡乱猜测并使用:var index: Client!
有效。我有点困惑为什么该页面没有说明 Client
是一种数据类型。
无论如何,现在我可以访问 Client
我不再可以访问 index
或 search
属性:
如何访问 index
和 search
属性?
代码如下:
// 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()
// ...
}