将特定对象从数组保存到CoreData

在这里想象一下Tinder应用程序,该应用程序将收到世界各地的用户个人资料列表。现在,如果应用程序用户将任何个人资料标记为收藏,那么我想将其保存在核心数据中。

我实现的方法是,确认对NSManagedObject类的可解码协议,以便我可以轻松地分析用户的响应并创建核心数据对象。

问题是,当我保存上下文时,将保存所有配置文件,而我只希望保存最喜欢的配置文件。

这是我的班级样子的代码段。

// MARK: - Name
class Name:NSManagedObject,Codable {
    @NSManaged var title: String
    @NSManaged var first: String
    @NSManaged var last: String

    enum CodingKeys: String,CodingKey {
        case title = "title"
        case first = "first"
        case last = "last"
    }
    
    init() {
        super.init(entity: NSEntityDescription.entity(forEntityName: String.init(describing: Name.self),in: PersistenceController.shared.context)!,insertInto: PersistenceController.shared.context)
    }
    
    @objc
    private override init(entity: NSEntityDescription,insertInto context: NSmanagedobjectcontext?) {
        super.init(entity: entity,insertInto: context)
    }

    convenience init(title: String,first: String,last: String) {
        self.init()
        self.title = title
        self.first = first
        self.last = last
    }
    
    // MARK: - Decodable
    required convenience init(from decoder: Decoder) throws {
        
        self.init()
        let values = try decoder.container(keyedBy: CodingKeys.self)
        title = try values.decodeIfPresent(String.self,forKey: .title) ?? ""
        first = try values.decodeIfPresent(String.self,forKey: .first) ?? ""
        last = try values.decodeIfPresent(String.self,forKey: .last) ?? ""
    }
    
    // MARK: - Encodable
    public func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(title,forKey: .title)
        try container.encode(first,forKey: .first)
        try container.encode(last,forKey: .last)
    }
}
ajiaolong 回答:将特定对象从数组保存到CoreData

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1400601.html

大家都在问