Swift Parse - 方法不会停止执行

时间:2016-01-21 00:13:06

标签: ios swift parse-platform

我有以下代码,基本上会查询Parse类并返回结果集。返回结果后,我会将该数组传递给函数,以检查是否设置了某些元素。

我在整个代码中使用了print语句来尝试和调试,并发现查询在

内执行
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

有人可以帮我找出问题所在。我很惊讶为什么这不起作用。

1 个答案:

答案 0 :(得分:4)

如果results为空,则results[0]["email"] as! String会崩溃,因为您强制解包nil个可选值。所以你讲的故事并不一致。

如果实际问题是空结果 - 您必须提供有关查询的详细信息以及您希望填充结果的原因。