背景
在我的代码中,我将PFUser(命名为MyUser)子类化,并尝试使用MyUser.query()
创建查询。它会返回PFQuery?
let query = MyUser.query()
query!.whereKey("username", containedIn: ["a", "b"])
query!.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
...
})
然后我将此提交给App Store Review,并被拒绝4次(花了我4周时间),他们一直在报告应用程序崩溃。这非常令人沮丧。在与Crashlytics核实后,它说下面的行正在提升EXC_BREAKPOINT
。
query!.whereKey("username", containedIn: ["a", "b"])
来自Apple的崩溃日志表明它是EXC_BREAKPOINT (SIGTRAP)
,根据TN2151暗示a non-optional type with a nil value
。事实上,Apple提供的崩溃日志的符号化版本显示行号为0。
我检查了Parse documentation,返回的PFQuery
不是可选的。我想知道实现这种逻辑的最佳做法是什么。
答案 0 :(得分:0)
我之前没有尝试将PFObject
子类化,但在检查文档时,查询方法(PF_NULLABLE PFQuery *)query
清楚地返回一个Nullable PFQuery
对象,该对象将被Swift视为可选。 (参见here)它还说子类只有在符合PFSubclassing协议的情况下才能调用此方法。
通常,当有可选项时,您确实需要像if let
这样的内容来保护自己免受nil
的返回。