Я исхожу из чтения кода из тонны сообщений StackOverFlow для того, что кажется довольно простой процедурой, но когда я пытаюсь реализовать то, что я узнал, в своем собственном коде, это терпит неудачу.
В моей функции ViewController didSelectRowAt я инициализировал пользовательские значения по умолчанию.
let song = tableViewData[indexPath.section].songData[indexPath.row - 1]
let songImage = song.artwork
UDM.shared.defaults.setValue(song.title, forKey: "name")
UDM.shared.songCover.setValue(songImage, forKey: "cover")
Затем создал класс для хранения UserDefaults
class UDM{
static let shared = UDM()
//let defaults = UserDefaults(suiteName: com.CTMVenturesInc.MusicTesters.saved.data)
let defaults = UserDefaults()
let songCover = UserDefaults()
//other funcs
}
После этого в моем TealViewController я создал элемент метки и изображения.
@IBOutlet var label: UILabel!
@IBOutlet var coverImage: UIImageView!
Наконец, в viewDidLoad TealViewController я установил значения
if let value = UDM.shared.defaults.value(forKey: "name") as? String{
label.text = value
}
if let value = UDM.shared.songCover.value(forKey: "cover") as? MPMediaItemArtwork{
coverImage.image = value.image(at: CGSize(width: 400, height: 400))
}
Это работает и отлично работает только с текстом по умолчанию, но когда я пытаюсь включить код изображения, я получаю эту ошибку запуска
Thread 1: "Attempt to insert non-property list object <MPConcreteMediaItemArtwork: 0x2830c4c80> for key cover"
Итак, я нашел этот пост Сохранить изображения в NSUserDefaults? и попытался реализовать в моем контроллере представления замену этого
UDM.shared.songCover.setValue(songImage, forKey: "cover")
с этим
[UDM.shared.songCover.set: UIImagePNGRepresentation(songImage) forKey: "cover"]
Но получить не удается найти ошибку forKey. Я посмотрел на этот пост Как передать изображение пользовательского интерфейса с одного контроллера представления на другой? и попробовал это
UDM.shared.songCover.standardUserDefaults().setObject(UIImagePNGRepresentation(songImage), forKey:"cover")}
Что я тут не сопоставляю?