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"可以被称为不同的值,这就是我寻找他们名字的原因。
答案 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();