ios - 如何访问 Algolia 索引和搜索属性?
问题描述
我是一名使用 Swift 5 的 iOS Swift 开发人员,我刚刚将我的 Algolia podpod 'AlgoliaSearch-Client-Swift', '~> 5.0'
从
pod 'InstantSearchClient', '~> 7.0'
.
我将标题从更改import AlgoliaSearch
为import InstantSearchClient
一旦我这样做了,我就无法再访问 Algolia 数据类型:
文档说:
let index = client.index(withName: "contacts")
index.search(Query(query: "s"), completionHandler: { (content, error) -> Void in
if error == nil {
print("Result: \(content!)")
}
})
datatype
该页面上的任何地方都没有说明of是什么,client
所以我进行了疯狂的猜测并使用了:var index: Client!
which 工作。我有点困惑为什么该页面没有说明任何关于Client
成为数据类型的内容。
无论如何,现在我可以访问Client
我不再可以访问index
orsearch
属性:
如何访问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()
// ...
}
推荐阅读
- android - ConstraintLayout 活动的底部不可见
- apache-kafka - 添加新磁盘后,Kafka 是否会重用旧磁盘进行写入?
- javascript - curl - 如何提交到贝宝 javascript sdk
- laravel - 拉拉维尔。前缀的默认路由不起作用
- angular - Angular File Upload Change 事件未传递正确的 ngFor 索引
- javafx - FindException:无法派生模块描述符
- nginx - nginx 未知指令“return”
- sql - SWQL/ SQL 分组并将一个字段中的多个结果组合成一个结果
- python - 如果匹配特定索引和关键字,则追加键?
- php - PHP 邮件程序问题