2016-05-04 8 views
-1

Wenn ich versuche, Arrays von Parse in einem lokalen Array zu speichern, kann ich nur innerhalb der findObjectsInBackgroundWithBlock {...} zugreifen. Als ich es außerhalb dieses Blocks zu drucken, zeigt es [] ...Speichern von Array von Parse in lokalen Array

Code:

var qArray : [[Int]] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let query = PFQuery(className: "Trivia") 
    query.findObjectsInBackgroundWithBlock { 
     (objects: [PFObject]?, error: NSError?) in 
     if objects != nil { 
      if let objects = objects { 
       for object in objects { 
        self.qArray.append(object["mainPattern"] as! [Int]) 
       } 
       print(self.qArray) // Prints a multi dimension array 
      } 
     } 
     if error != nil { 
      print(error) 
     } 
    } 
    print(self.qArray) // prints [] 
} 
+0

Haben Sie den Fehler, den Sie gemacht haben, herausgefunden? –

Antwort

0

Es ist sehr wahrscheinlich, da das Array wurde bisher noch nicht aufgefüllt, weil es im Hintergrund läuft. Sie können versuchen, dispatch_group zu verwenden, um dieses Problem zu umgehen.

0

Ich denke, Sie sind Missverständnis was findInBackground bedeutet. Es bedeutet, dass der Code nach dem Rückruf weiterhin ausgeführt wird, so dass es query.findInBackground .... aufruft und dann mit der nächsten Zeile fortfährt, die print ist (self.qArray). Irgendwann später hört es von der Datenbank zurück und führt den gesamten Code innerhalb des Callbacks aus, bei dem das Array schließlich gefüllt wird.