2015-02-21 1 views
0

Я провел некоторое исследование и до сих пор не знаю, что вызывает эту ошибку в моем коде (ну, я знаю, что вызывает его, но я не знаю, почему ...)«Ошибка команды из-за сигнала: Ошибка сегментации: 11» - В чем проблема?

По сути, я получаю массив , results, из Parse Cloud Code. Затем я отправляю его в ViewController2 для печати раздела массива в формате UILabel. Когда я это сделаю, я получаю ошибку компилятора. Это меня действительно смущает!

Обратите внимание, что result, массив, который я извлекаю, содержит как строки, так и логические значения, поэтому я сделал это 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. 
} 
+0

Вы используете Xcode 6.3 Swift1.2? –

+0

Я использую Xcode 6.1.1 – nick9999

+0

Я не знаю о быстрой версии – nick9999

ответ

2

Попробуйте изменить:

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 

У меня была такая же ошибка при использовании AnyObject с findObjectsInBackgroundWithBlock. Похоже на: this link, который был вызван из-за изменений в Parse SDK

+0

Кстати это случилось наоборот для меня - изменение '(объекты: [PFObject] ?, ошибка: NSError) -> Пустота в' к ' (объекты: [AnyObject] ?, ошибка: NSError ?) -> Пустота в'. Очень странно. – allocate