2016-04-11 13 views
0

Diese meine Initialisierung des Arrays ist:Abfrage PFObjects in schnellen Array

var restaurantsArray = [String]() 

Hier ist die Abfrage-Funktion:

func loadRestaurants(){ 
    let fetchRestaurantsQuery = PFQuery(className: "Restaurants") 
    fetchRestaurantsQuery.findObjectsInBackgroundWithBlock{ (objects: [PFObject]?, error: NSError?) -> Void in 
     if error == nil{ 
      //after successfull fetch 
      print("b") 
      if let fetchedRestaurants = objects{ 
       print("c") 

       for fetchedRestaurant in fetchedRestaurants{ 
        print("a") 
        self.restaurantsArray.append(fetchedRestaurant.objectForKey("Name") as! String) 
        print(fetchedRestaurant.objectForKey("Name") as! String) 
       } 
      } 

     }else{ 
      // Log details of the failure 
      print("Error: \(error!) \(error!.userInfo)") 
     } 
    } 
} 

Aus irgendeinem Grund, wird der Code in der for-Schleife nie aufgerufen . Irgendwelche Vorschläge, um das zu beheben?

+0

Nur ein Verdacht, aber haben Sie überprüft, ob Sie tatsächlich einige Restaurants zurück bekommen? Vielleicht gibt es keinen Fehler, also gibt man beide "if" -Anweisungen, aber man gibt nicht "for" ein, wenn es keine Restaurants gibt. – Lasse

+0

Ja, ich überprüfe meine Abfrage jetzt –

Antwort

0

Da objects als optional [PFObject]? die richtige optionale Bindung Syntax deklariert ist nur

if let fetchedRestaurants = objects { 

und fetchedRestaurant in fetchedRestaurant ist ziemlich seltsam.

for fetchedRestaurant in fetchedRestaurants { 
+0

Ich habe meinen Code auf den obigen bearbeitet, aber der Code wird immer noch nicht in die For-Schleife –

+0

Sie haben immer noch den Ausdruck mit den zwei Ausrufezeichen. Beide werden nicht so gut wie das Gießen benötigt. Die rechte Seite von 'if let' muss optional sein. Und es wird nicht empfohlen, den gleichen Variablennamen 'objects = objects' – vadian

+0

zu verwenden, wenn ich"? " auf der rechten Seite von 'wenn lassen ', Xcode sagt mir, es zu löschen. Außerdem gibt der Code die if-Anweisungen ein, aber nicht die for-Schleife –