Отображение изображения с разбора в Swift - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь отобразить изображение, сохраненное в Buddy For Parse, в UIImageView, однако постоянно получаю эту ошибку:

Не удалось преобразовать значение типа «PFFileObject» (0x1045e0568) в «NSString» (0x1041d75d8). 2019-04-13 18: 15: 09.869460-0500 PerfectLaptop [43839: 3094232] Не удалось преобразовать значение типа 'PFFileObject' (0x1045e0568) в 'NSString' (0x1041d75d8).

Я уже сохранил множество строк в Parse, и могу без проблем получить к ним доступ, а также сохранил изображение, которое я хотел использовать, однако, несмотря ни на что, я не могу заставить его работать. , Многие из найденных мной решений включают приведение объекта к типу PFFile, однако, похоже, его больше не существует.

let query = PFQuery(className: "whichOneRecommended")
query.findObjectsInBackground { (objects, error) in
    if error == nil
    {
        if let returnedobjects = objects
        {
            for object in returnedobjects
            {

                if (object["whichOne"] as! String).contains("\(self.whichOneJoined)")
                {
                    self.laptopImage.image = UIImage(named: (object["laptopImage"]) as! String)



                }
            }
        }
    }
}

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

Заранее спасибо

1 Ответ

1 голос
/ 14 апреля 2019

Первое, что следует отметить, это то, что PFFile было переименовано в PFFileObject.

Вы пытаетесь передать object["laptopImage"], который является значением типа Any, в UIImage(named:), что невозможно сделать, поскольку эта функция ожидает String.

Сначала вам нужно создать константу типа PFFileObject:

let file = object["laptopImage"] as? PFFileObject

А затем загрузите данные файла, создайте UIImage из PFFileObject и назначьте изображение для UIImageView:

file.getDataInBackground { (imageData: Data?, error: Error?) in
    if let error = error {
        print(error.localizedDescription)
    } else if let imageData = imageData {
        let image = UIImage(data: imageData)
        self.laptopImage.image = image
    }
}

Подробную информацию об этом можно найти в разделе о файлах в Руководстве по iOS .

...