首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的轻量级coredata迁移问题

Swift中的轻量级coredata迁移问题
EN

Stack Overflow用户
提问于 2021-10-13 15:51:25
回答 1查看 99关注 0票数 0

我实现了核心数据迁移,因为我需要向我的CoreData模型添加一个新属性。

我所做的就是:

  1. 创建新模型版本。
  2. 编辑新模型版本。
  3. 在创建新版本时将选项NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption设置为YES。

然后我将属性添加到NSManagedObject类中:

代码语言:javascript
复制
extension Clip {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Clip> {
        return NSFetchRequest<Clip>(entityName: "Clip")
    }

    @NSManaged public var text: String?
    @NSManaged public var date: String?
    @NSManaged public var hidden: NSNumber?
    @NSManaged public var desc: String?
    @NSManaged public var pinned: NSNumber?

    @NSManaged public var tag: String?  //new
}

我将新项目保存到核心数据中,如下所示:

代码语言:javascript
复制
    var filteredClips = [Clip]()

    func appendNewItem(text: String, desc: String?){
        let entityDescription = NSEntityDescription.entity(forEntityName: "Clip", in: managedContext)!
        let newItem = Clip.init(entity: entityDescription, insertInto: managedContext)
        newItem.text = text.trimmingCharacters(in: .whitespacesAndNewlines)
        newItem.date = getDate()
        newItem.desc = desc
        newItem.tag = "favourite" //new attribute
        newItem.hidden = false
        filteredClips.append(newItem)
        
        try! managedContext.save()
    }

项不能添加到coredata中。我在启动时收到了这条错误消息:

代码语言:javascript
复制
"Failed to call designated initializer on NSManagedObject class 'Clip'"

更新

我不认为错误消息与此问题有关,因为即使在取消迁移步骤时,也会显示错误消息。

EN

回答 1

Stack Overflow用户

发布于 2021-10-14 12:03:27

问题似乎源于xcdatamodel的目标成员资格被禁用。一旦我添加了目标成员资格,它就会像预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69558583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档