memxr1es
@memxr1es
Чел

Как сохранить / получить фото пользователя?

Доброго дня.

Задача такая, пользователь при помощи PhotosPicker устанавливает свое изображение, которое в последующем должно быть сохранено в CoreData. При повтором заходе, соответственно, изображение должно подгружаться.

Как это реализовать? И какие есть способы решения этой задачи?
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Araya
Так ты же сам написал, при помощи CoreData, хотя я бы такое хранил на бэкенде.
При заходе в карточку проверяй, лежит ли в базейке фото, вот и все
Ответ написан
Комментировать
SnapSh0t
@SnapSh0t
iOS-Developer
func savePhotoToCoreData(image: UIImage) {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return
    }

    let managedContext = appDelegate.persistentContainer.viewContext
    let entity = NSEntityDescription.entity(forEntityName: "Photo", in: managedContext)!
    let photo = NSManagedObject(entity: entity, insertInto: managedContext) as! Photo

    if let imageData = image.pngData() {
        photo.imageData = imageData
    }

    do {
        try managedContext.save()
    } catch let error as NSError {
        print("Could not save. \(error), \(error.userInfo)")
    }
}


func fetchPhotoFromCoreData() -> UIImage? {
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
        return nil
    }

    let managedContext = appDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Photo")

    do {
        let results = try managedContext.fetch(fetchRequest) as! [Photo]

        if let firstPhoto = results.first, let imageData = firstPhoto.imageData {
            return UIImage(data: imageData)
        } else {
            return nil
        }
    } catch let error as NSError {
        print("Could not fetch. \(error), \(error.userInfo)")
        return nil
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы