0

背景崩潰的PFUser.query()力展開

  • 解析1.8.5的iOS SDK
  • 的Xcode 7.0.1(7A1001)
  • 斯威夫特2

在我的代碼,我分類了PFUser(命名爲MyUser),並嘗試使用MyUser.query()創建查詢。它返回我PFQuery?

let query = MyUser.query() 
query!.whereKey("username", containedIn: ["a", "b"]) 
query!.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 
    ... 
}) 

我遂以這對App Store的審查,以及被拒絕的4倍(帶我4周),而且他們一直在這裏報告應用程序崩潰。這非常令人沮喪。在與Crashlytics檢查後,它說下面的行正在增加EXC_BREAKPOINT

query!.whereKey("username", containedIn: ["a", "b"]) 

從蘋果的崩潰日誌說,這是EXC_BREAKPOINT (SIGTRAP),根據TN2151暗示a non-optional type with a nil value。實際上蘋果提供的符號化版本的崩潰日誌顯示行數爲0.

我查了Parse documentation,返回的PFQuery不是可選的。我想知道實現這個邏輯的最佳實踐是什麼。

回答

0

我還沒有嘗試過PFObject之前的子類,但當我檢查文檔時,查詢方法(PF_NULLABLE PFQuery *)query明確返回了可空對象PFQuery對象,Swift將此對象視爲可選對象。 (參見here)它還表示,如果該子類符合PFSubclassing協議,則只能調用此方法。

通常當有一個可選的時候,你真的需要像if let這樣的東西來保護自己免受nil的返回。