WatchOS 2 не читает NSData с iPhone AppDelegate

Мне нужна помощь или дополнительный глаз, чтобы выяснить, почему мой запрос и методы не возвращают данные в Apple Watch. Я пытаюсь заполнить свою таблицу изображениями, PFFiles хранится в моей базе данных разбора. Когда мои сообщения требуют возврата String, они проходят, но не тогда, когда я запрашиваю NSData обратно. Мне пришлось запросить файл NSData, потому что Watch не соответствует протоколам разбора, как я узнал. Поэтому я пытаюсь преобразовать их на стороне AppDelegate, а затем передать как NSData.

Вот мой AppDelegate:

let query = PFQuery(className: "dogInfo")
query.whereKey("userId", equalTo: (PFUser.currentUser()?.objectId)!)
query.orderByAscending("dogName")
query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

    if error == nil && objects!.count > 0 {

        var dataArray = [NSData]()

        for object in objects! {

            if let message = object["imageFile"] as? PFFile {

                message.getDataInBackgroundWithBlock({ (data, error) -> Void in

                    if error == nil {

                        dataArray.append(data!)
                    }
                })
            }
        }

        replyHandler(["images":dataArray])
    }
})

Вот как я получаю его на стороне Watch InterfaceController:

self.session.sendMessage(["content":"getImages"], replyHandler: { (result) -> Void in

    if let imagesRequest = result as? [String:[NSData]] {

        if let dogData = imagesRequest["images"] {

            self.imageFiles = dogData

            print("Imagefiles count:\(self.imageFiles.count)")                                              
            self.logInLabel.setHidden(true)
            self.loadTableData()
        }
    }

}, errorHandler: { (error) -> Void in
    print("got images error: \(error)")
})

1 ответ

Вы заполняете свой dataArray внутри асинхронного блока (message.getDataInBackgroundWithBlock) и вернуть его за пределы этого блока, прежде чем он сможет заполнить его.

Другие вопросы по тегам