algolia搜索api返回如下对象:

"hits": [
{
  "foo": {...},
  "bar": {...},
  "objectID": {...},
  "_highlightResult": {...},
  "downloads": {...}
}]

我想列出钥匙,这样就只剩下“foo”和“bar”了。
keyArray = Array(chosenObject!.keys)
// returns ["downloads", "_highlightResult", "objectID", "foo", "bar"]
keyArray = keyArray.filter{$0 != "objectID"}
keyArray = keyArray.filter{$0 != "_highlightResult"} //Crash here
keyArray = keyArray.filter{$0 != "downloads"}

当我这样做时,它对我和我的大多数用户都是有效的。但是大约2-3%的用户在过滤掉“highlightresult”时会遇到崩溃。不管那一行的顺序在哪里,当过滤掉“highlightresult”时,总是会发生这种情况,我已经处理了好几天了。
他们几乎都在iphone上运行ios 11.3或11.2。
编辑:为了澄清,“foo”和“bar”可以是不同的词。objectid、downloads和highlightresult总是返回,但是“foo”和“bar”可以被称为不同的值,这就是为什么我要查找它们的名称。

最佳答案

由于您的问题没有系统地触发,我认为这是因为根据搜索结果,highlightresult数组要么为空,要么为空。由于我只是一个js开发人员,我不确定它在移动中如何应用,但我知道我总是在测试highlight和snippet属性的值之后处理它们。

10-08 12:12