"Command failed due to signal: Segmentation fault: 11" - 问题出在哪里?



我做了一些研究,仍然不知道是什么导致了我的代码中的这个错误(好吧,我知道是什么造成的,但我不知道为什么…)

本质上,我从Parse Cloud Code中检索一个数组results。然后我将它发送到ViewController2,以UILabel的格式打印出数组的一部分。当我这样做时,我会得到编译器错误。这真让我困惑!

请注意,我检索的数组result同时包含Strings和Boolean值,这就是为什么我将其设为AnyObject,以便以后可以强制转换特定部分。

云代码:

Parse.Cloud.define("checkAccountStatus", function(request, response) {
var results = [];
var query = new Parse.Query(Parse.User);
query.equalTo("username", request.params.username);
query.first({
        success: function(getUserData) {
        if (request.params.operation == 1) {
            var passwordChanged = getUserData.get("passwordChanged");
            var question1 = getUserData.get("question1");
            var question2 = getUserData.get("question2");
            var question3 = getUserData.get("question3");
            results.push(passwordChanged);
            results.push(question1);
            results.push(question2);
            results.push(question3);
        }
        else {
            if (request.params.answerToQuestion1 == getUserData.get("answer1")) {
                results.push(true)
            }
            else {
                results.push(false)
            }
            if (request.params.answerToQuestion2 == getUserData.get("answer2")) {
                results.push(true)
            }
            else {
                results.push(false)
            }
            if (request.params.answerToQuestion3 == getUserData.get("answer3")) {
                results.push(true)
            }
            else {
                results.push(false)
            }
        }
            response.success(results);
        },
        error: function(error) {
            response.error("There was an error");
        }
});
});

ViewController1代码(部分):

 var data: AnyObject!
 PFCloud.callFunctionInBackground("checkAccountStatus", withParameters: ["username" : self.username.text, "operation" : 1]) {
            (result: AnyObject!, error: NSError!) -> Void in
            if (error == nil) {
            self.data = result
            //...
            }
 }
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "reset") {
        var svc = segue.destinationViewController as ViewController2;
        svc.data = data
    }
}

ViewController2代码:

@IBOutlet var question1: UILabel!
var data: AnyObject!
override func viewDidLoad() {
     super.viewDidLoad()
     question1.text = data[1] as String! //THIS GIVES ME THE ERROR.
}

尝试更改:

PFCloud.callFunctionInBackground("checkAccountStatus", withParameters: ["username" : self.username.text, "operation" : 1]) {
        (result: AnyObject!, error: NSError!) -> Void in

PFCloud.callFunctionInBackground("checkAccountStatus", withParameters: ["username" : self.username.text, "operation" : 1]) {
        (result: PFObject!, error: NSError!) -> Void in

我在使用带有findObjectsInBackgroundWithBlock的AnyObject时也出现了同样的错误。看起来类似于:这个链接是由于Parse SDK 中的更改而引起的

最新更新