过滤Algolia结果时,某些iOS用户会遇到崩溃

时间:2018-04-18 02:36:24

标签: swift algolia

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"}

当我这样做时,它适用于我和我的大多数用户。但是当过滤掉" _highlightResult"时,大约2-3%的用户会遇到崩溃。过滤掉" _highlightResult"而且我已经搞砸了好几天了。

他们几乎都在iPhone上运行iOS 11.3或11.2。

编辑:澄清," Foo"和" Bar"可以是不同的词。始终返回ObjectID,downloads和_highlightResult,但是" foo"和" bar"可以被称为不同的值,这就是我寻找他们名字的原因。

2 个答案:

答案 0 :(得分:2)

由于您的问题没有系统触发,我相信它是因为_highlightResult数组为空或null,具体取决于搜索。由于我只是一名JS开发人员,我不确定它在移动设备中是如何应用的,但我知道在测试其价值后我总是会处理突出显示和代码段属性。

答案 1 :(得分:0)

您的崩溃可能是由于强行解缠在这里if let keyArray = Array(chosenObject.keys) { let newList = keyArray.filter{ $0 == "foo" || $0 == "bar" } } 。而不是这样做:

$product = Product::where('slug', $slug)->firstOrFail();
$random = Product::inRandomOrder()->limit(10)->get();