【发布时间】:2019-07-07 08:59:12
【问题描述】:
我有一个自定义类,我将其用作Set<ListItem>。我想将其存储到 userDefaults。但是,我在尝试时收到Attempt to set a non-property-list object as an NSUserDefaults 错误。我尝试将其更改为Array,然后保存它,但仍然是同样的错误。在看到一些帖子后,我也尝试了另存为数据,这又给了我以下错误。
NSForwarding: 警告: 'iTunes_Search_Me.ListItem' 类的对象 0x600003bf9a00 没有实现 methodSignatureForSelector: -- 前面的麻烦
class ListItem: Codable ,Equatable, Hashable {
let wrapperType, kind: String?
let artistID, collectionID, trackID: Int?
let artistName, collectionName, trackName: String?
let trackViewURL: String?
let artworkUrl30, artworkUrl60, artworkUrl100: String?
let releaseDate: String?
let primaryGenreName: String?
var isSelected: Bool = false
enum CodingKeys: String, CodingKey {
case wrapperType, kind
case artistID
case collectionID
case trackID
case artistName, collectionName, trackName
case trackViewURL
case artworkUrl30, artworkUrl60, artworkUrl100, releaseDate, primaryGenreName
}
static func ==(lhs: ListItem, rhs: ListItem) -> Bool {
return lhs.trackID == rhs.trackID
}
func hash(into hasher: inout Hasher) {
hasher.combine(trackID)
}
}
Attempt to set a non-property-list object as an NSUserDefaults
【问题讨论】:
-
也许使用某种数据库来做这种事情?
-
这是一种效率较低的解决方法。前任。核心数据。所以只存储一个数组会是一个更好的选择,但我不知道如何解决这个问题。
-
我的意思是
UserDefaults不是用来存储这种数据的。它适用于用户偏好等。
标签: ios arrays swift set userdefaults