如何保存 MKMapItem 类型的数组

How to save an array of type MKMapItem

如何在 UserDefaults 的帮助下保存和检索 MKMapItem 的数组?

var recentDestination: [MKMapItem] = []

由于MKMapItem符合NSCoding,所以可以保存[MKMapItem]Data形式在UserDefaults 使用 NSKeyedArchiver,即

let data = NSKeyedArchiver.archivedData(withRootObject: recentDestination)
UserDefaults.standard.set(data, forKey: "recentDestination")

类似地,要UserDefaults中获取保存的数据,请使用NSKeyedUnarchiver

if let data = UserDefaults.standard.data(forKey: "recentDestination") {
    if let arr = NSKeyedUnarchiver.unarchiveObject(with: data) as? [MKMapItem] {
        print(arr)
    }
}

UserDefaults 不应用于存储大于 numbers/strings/bools 的数据。为此,您应该使用 NSKeyArchiver