2015-05-22 1 views
1

Я пытаюсь добавить к массиву класса I, созданного под названием «Сторона», называемого «сторонами» для использования в UITableView, но созданная мной функция возвращает значение nil для массивов даже хотя в «Парсе» есть один.Parse PFQuery возвращает nil (swift)

Я создал массив на мой взгляд, контроллер, как это:

private var parties:[Party] = [Party]() 

И я также попытался это с тем же результатом:

var parties:[Party] = [Party]() 

функция выглядит следующим образом:

func retrieveParties() { 
    //create new PFQuery 
    var query:PFQuery = PFQuery(className: "Party") 

    //call findobjectinbackground 
    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in 

     //clear parties 
     self.parties = [Party]() 

     //loop through the objects array 
     for partyObject in objects! { 
      //retrive the Text column value for each PFobject 
      let party:Party? = (PFObject: partyObject as? Party) 
      //Assign it to our parties 
      if party != nil{ 
      self.parties.append(party!) 
      } 
     } 

     dispatch_async(dispatch_get_main_queue()){ 
      //reload the table view 
      self.discoverTableView.reloadData() 
     } 
    } 
} 

Я также пробовал:

func getParties() { 

    // Clear up the array 
    parties.removeAll(keepCapacity: true) 
    self.discoverTableView.reloadData() 

    // Pull data from Parse 
    let query = PFQuery(className:"Party") 
    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error: NSError?) -> Void in 

    if error == nil { 
    if let objects = objects as? [PFObject] { 
    for (index, object) in enumerate(objects) { 
     // Convert PFObject into Party object 
     let party = Party(pfObject: object) 
     self.parties.append(party) 
     } 
    } 

} else { 
    // Log details of the failure 
    println("Error: \(error) \(error!.userInfo)") 
    } 
} 
    //query.cachePolicy = PFCachePolicy.NetworkElseCache 
} 

Независимо от того, какую функцию я использую, массив выходит пустым. Огромное спасибо всем, кто может это понять!

ответ

2

О, я просто решил проблему! Все, что я сделал, это изменить функцию getParties() на:

func getParties() { 

    // Clear up the array 
    parties.removeAll(keepCapacity: true) 
    self.discoverTableView.reloadData() 

    // Pull data from Parse 
    let query = PFQuery(className:"Party") 
    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error: NSError?) -> Void in 

    if error == nil { 
    if let objects = objects as? [PFObject] { 
    for (index, object) in enumerate(objects) { 
     // Convert PFObject into Party object 
     let party = Party(pfObject: object) 
     self.parties.append(party) 
     } 
    } 

} else { 
    // Log details of the failure 
    println("Error: \(error) \(error!.userInfo)") 
    } 
     dispatch_async(dispatch_get_main_queue()){ 
      //reload the table view 
      self.discoverTableView.reloadData() 
      query.cachePolicy = PFCachePolicy.NetworkElseCache 
     } 

} 
    //query.cachePolicy = PFCachePolicy.NetworkElseCache 
} 

и это волшебно сработало! Надеемся, что это решение будет полезно для всех, кто сталкивается с этой проблемой :)

 Смежные вопросы

  • Нет связанных вопросов^_^