Я разрабатываю приложение, используя ios, swift и parse.com в качестве backend. Моя проблема в том, что мне нужен один объект объекта запроса во втором объекте запроса, например, ниже кода. но когда я использую ниже код GUI, перестает отвечать на запросы в течение некоторого времени из-за метода findObjects(). Вместо этого я использовал findObjectsInBackgroundWithBlock(), но вместо того, чтобы показывать self.posts tableview только одну запись в tableview. У меня 10 записей в таблице. Можете ли вы указать мне правильный способ решения проблемы ниже. Фактически я не хочу использовать метод findObjects().findObjectInBackgroundWithBlock inested ios
var query = PFQuery(className:"Post")
var fquery = PFQuery(className: "Friends")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
let user = PFUser.currentUser()
if let objects = objects as? [PFObject] {
for object in objects {
friendArray.removeAll(keepCapacity: false)
fquery.whereKey("whosefriend", equalTo: object["postusername"])
var fobjects = fquery.findObjects()
for fobject in fobjects {
friendArray.append(fobject["friendname"] as String)
}
if (contains(friendArray, user["fullname"] as String)) {
let post = Post(.......)
self.posts.append(post)
}
}
}
self.tableView.reloadData()
} else {
println("Error: \(error) \(error.userInfo!)")
}
}
Что вы уже пытались решить? Если вы не хотите использовать findObjects(), то почему вы? – RyanR
Вы определенно предпочли бы не использовать findObjects, потому что это синхронно и блокирует основной поток. –
Спасибо за ответ, я попытался использовать findObjectsInBackgroundWithBlock вместо findObjects, но проблема в том, что это асинхронная функция, поэтому данные не получают должным образом, поэтому я использовал findObjects, чтобы получить данные и выполнить процесс. –