gpt4 book ai didi

swift - 仅当应用程序不是全新安装时,无法将 __NSCFDictionary 类型的值转换为 NSData

转载 作者:行者123 更新时间:2023-11-30 10:44:14 25 4
gpt4 key购买 nike

当此代码在新安装的应用程序上运行时,它工作得很好。但是,当设备上之前没有保存任何数据时,此功能会导致应用程序崩溃。

我收到错误无法将类型 __NSCFDictionary 的值转换为 NSData 并且它在以下行返回线程零错误:

播放列表 = 尝试! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(playlistsData as!Data) as! [字符串:[歌曲]]

下面是我的完整功能代码:

func getPlaylists() -> [String:[Song]] {
var playlists: [String:[Song]] = [:]
let playlistsData = defaults.object(forKey: "user_playlists")
if playlistsData != nil {
playlists = try! NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(playlistsData as! Data) as! [String:[Song]]
}

return playlists
}

最佳答案

为了安全地获取数据,请将方法更改为

func getPlaylists() -> [String:[Song]] {
guard let playlistsData = defaults.data(forKey: "user_playlists"),
let playlists = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(playlistsData) as? [String:[Song]] else { return [:] }
return playlists
}

顺便说一句,发生错误的原因是您之前将字典保存到 UserDefaults 而不是 Data

您的意思可能是但是,当之前保存数据时...

关于swift - 仅当应用程序不是全新安装时,无法将 __NSCFDictionary 类型的值转换为 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com