iOS Swift 将领域对象存储到 UserDefaults.standard

iOS Swift Storing Realm Object to UserDefaults.standard

这是我的领域对象:

PracticeAreaEntity {
    id = 0;
    c_id = 21871;
    c_number = C.C/1/2016;
    c_title = Title Here;
    date = 2017-04-07T00:00:00.000Z;
    description2 = ;
    object = {"id":205039,"c_id":21871,"name":"07-04-2017","s_time":"2017-04-07T00:00:00.000Z","e_time":"2017-04-08T00:00:00.000Z","creator":"system","created_by_id":null,"description":null,"c_at":"2017-03-26T00:11:52.134Z","u_at":"2017-04-07T01:00:27.396Z","judge":null,"phearing":null,"google_event_id":null,"is_completed":false,"business":null,"last_notified":"2017-04-07T01:00:27.382Z","ng_date":null,"b_date":null,"b_d_available":false};
    p_id = 205039;
    subject = 07-04-2017;
    type = Event;
}

我需要将这个领域对象存储到 UserDefault.standard 并在另一个页面中取回值。这是我的 UserDefults 代码:

let userDefaults = UserDefaults.standard
userDefaults.set(filteredtotalContactArray[indexPath.row], forKey: "SelectedPractice")
userDefaults.synchronize()

filteredtotalContactArray[indexPath.row] 等于我之前指定为领域对象的值。但是我收到错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to insert non-property list object 

您需要为您的 Realm 模型提供 NSCoding 的一致性方法,以便能够将它们持久化到 UserDefaults

但是,我鼓励您使用 Realm 来持久化 Realm 模型,因为您已经在您的应用中使用了 Realm。