2015-10-01 7 views
1

У меня есть проект Swift, который использует Parse для хранения фотографий профиля. По какой-то причине изображение профиля PFFile было больно работать. Я, наконец, получил это работает в Swift 1.2 с помощью этой функции:Swift 2.0 Parse PFFile/Image

func image(completion: (image: UIImage) -> Void) 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { 

     if self.profilePictureImage == nil 
     { 
      if self.profilePicture != nil 
      { 

       self.fetchIfNeeded() 
       if let data = self.profilePicture!.getData() 
       { 
        self.profilePictureImage = UIImage(data: data) 

       } 
      }else 
      { 
       self.profilePictureImage = UIImage(named: "no_photo")! 
      } 
     } 

     dispatch_async(dispatch_get_main_queue(),{ 

      completion(image: self.profilePictureImage) 

     }) 
    }) 
} 

profilePicture является внутренним UIImage` @NSManaged PFFile

profilePictureImage' is an

Я мигрировали в проект Swift 2.0, и это сбой с развёрнутым nil на вызове completion.

Что изменилось? Как я могу это ответить? Благодаря!

ответ

0

Прежде всего, ознакомьтесь с каркасом ParseUI, который включает в себя класс PFImageView для автоматической обработки загрузки и отображения PFFiles.

Создать выход

@IBOutlet weak var profilePictureImage: PFImageView! 

Типичное использование

// Set placeholder image 
profilePictureImage.image = UIImage(named: "no_photo") 

// Set remote image (PFFile) 
profilePictureImage.file = profilePicture 

// Once the download completes, the remote image will be displayed 
profilePictureImage.loadInBackground { (image: UIImage?, error: NSError?) -> Void in 
    if (error != nil) { 
     // Log details of the failure 
     println("Error: \(error!) \(error!.userInfo!)") 
    } else { 
     // profile picture loaded 
    } 
} 

Вне этого, там было куча сообщений в последнее время с людей, испытывающих проблемы с PFFile.getData() не работает в Swift2 из-за изменений в iOS9 для обеспечения безопасности приложений. According to Parse this has been fixed in the latest SDK