1
我有以下代碼基本上會查詢Parse類並返回結果集。返回結果後,我會將該數組傳遞給函數以檢查是否設置了某些元素。Swift分析 - 方法不會停止執行
我用過的打印語句遍佈代碼嘗試和調試,發現執行查詢和內
if error == nil
我得到的結果數組是空的。因此,當我傳遞給我下面的函數,它永遠不會出來呢:
func emailOrUsernameIsTaken(results: [PFObject])->Int
{
/*Check if username is taken or if email is taken*/
var preferenceTaken: Int = 0
if(results[0]["email"] as! String != "" && results[0]["email"] as! String == self.userObject.email!)
{
preferenceTaken = 1
}else if(results[0]["appUsername"] as! String != "" && results[0]["appUsername"] as! String == self.userObject.username!){
preferenceTaken = 2
}
return preferenceTaken
}
,這是該查詢正在發生的代碼:從上面打印語句
let query = PFQuery.orQueryWithSubqueries([usernameInputCheck, emailInputCheck])
query.findObjectsInBackgroundWithBlock {
(results: [PFObject]?, error: NSError?) -> Void in
if error == nil {
print("Before")
let checkResult = self.emailOrUsernameIsTaken(results!)
print(results)
print("After")
}
}
爲輸出,我得到控制檯:
Before
Optional([])
After
有人可以幫我找出問題。我很驚訝爲什麼這不起作用。
如果'results'爲空,'results [0] [「email」] as!字符串'應該崩潰,因爲你強制解包無可選值。所以你講的故事並不一致。 - 如果問題是空洞的結果 - 你沒有提供任何關於你的查詢的細節,以及你爲什麼期望有一個填充結果。 – Mundi
建立這一點,只是因爲可能沒有錯誤並不能保證結果具有價值。 – pbush25
@Mundi true。我錯誤的假設,我承認。好的,所以在查詢塊中,我將驗證結果不是空的...如果不是空的,那麼執行正文。如果爲空,我會設置一個全局變量並檢查它的塊。如果符合條件,我會執行繼續。如何才能確保在塊完成執行之後塊之後的代碼不會執行? –