如何将可映射对象保存到 nsuserdefault?

Posted

技术标签:

【中文标题】如何将可映射对象保存到 nsuserdefault?【英文标题】:How to save mappable object to nsuserdefault? 【发布时间】:2019-01-22 13:37:38 【问题描述】:

我想将自定义的整个对象保存到 NSUserDefault ?

这是我的自定义对象..

import UIKit
import ObjectMapper

class SAuthModel: Mappable 

    var status: Int?
    var message: String?
    var result: SResultModel?
    var authToken: String?

    required init?(map: Map) 

    

    func mapping(map: Map) 
        status       <- map["code"]
        message      <- map["message"]
        authToken    <- map["authToken"]
        result       <- map["data"]
    


class SResultModel: Mappable 

    var name, email, countryCode, mobile, isNotification, promoCode, imageURL, _id, isMobileVerify,otp,faceBookId,googleId,stripeCustId,isProfileSet,created:String?

    required init?(map: Map) 

    

    func mapping(map: Map) 
        name             <- map["name"]
        email            <- map["email"]
        countryCode      <- map["countryCode"]
        mobile           <- map["mobile"]
        isNotification   <- map["isNotification"]
        promoCode        <- map["promoCode"]
        imageURL         <- map["imageURL"]
        _id              <- map["_id"]
        isMobileVerify   <- map["isMobileVerify"]
        otp              <- map["otp"]
        faceBookId       <- map["faceBookId"]
        googleId         <- map["googleId"]
        stripeCustId     <- map["stripeCustId"]
        isProfileSet     <- map["isProfileSet"]


    


 SAuthService().logInService(parameters:userModel.toJSON()).done(response) -> Void  in
            SVProgressHUD.dismiss()

            if response.status == 210 
                guard let responseMessage = response.message else 
                    return
                
                HHelper.showAlert(responseMessage)
             else if response.status == 200 
                USER_DEFAULTS.set(response.result, forKey:ConstantTexts.resultData.localizedString)

                kAppDelegate.pushToHomeViewContoller()
            

我试图在 USER_DEFAULTS 中保存自定义模型对象,但它一直在崩溃。

【问题讨论】:

【参考方案1】:

描述了存储到 UserDefaults 的正确方法in this article

var userDefaults = UserDefaults.standard
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: teams)
userDefaults.set(encodedData, forKey: "teams")

基本上你必须为它提供一个数据对象...

【讨论】:

它是“UserDefaults.standard”。

以上是关于如何将可映射对象保存到 nsuserdefault?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:将一个对象数组和另一个对象数组保存到 NSUserDefaults 中

将 NSRect 保存到 NSUserDefaults

如何快速将 NSIndexPath 添加到 NSUserDefaults

使用 NSKeyedArchiver 将 NSMutableArray 保存到 NSUserDefaults

如何将 MPMediaItemCollection 保存到 NSUSerDefaults?

如何使用 NSUserdefaults 为每个启动的对象创建一个密钥