如何在iOS中的数据模型中存储Core数据中的数据,并获取数据模型的格式

时间:2016-11-16 11:44:30

标签: ios sql objective-c swift core-data

我想将数据存储为iOS中的数据模型。 我正在尝试这个但它没有用。

我的数据模型类

class FileSaveModel: NSManagedObject {
    @NSManaged var id: String
    @NSManaged var name: String
    @NSManaged var path: String
    @NSManaged var time: String
    @NSManaged var type: String
    @NSManaged var uid: String

    // TODO: - Need to get the use of this
   // lazy var uidd: NSManagedObjectID = NSManagedObjectID()

    override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
        super.init(entity: entity, insertInto: context)
    }

    init(name:String, path: String, contentType: ContentType, entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) {
        super.init(entity: entity, insertInto: context)

        self.path = path
        self.name = name
        self.type = contentType.rawValue
        self.time = "\(NSDate())"
        self.uid = "56"
        self.id = "789"
    }
}

像这样保存

func save(name: String, path: String, type: ContentType, modelContent: ModelTest)  {

        guard let entity = self.entityWith(name: entityName) else {
            return
        }

当我尝试使用此保存时,它会保存

//let modelFile = FileSaveModel(name: name, path: path, contentType: //type, entity: entity, insertInto: appDelegate.context())

但是这个错误的错误"无法将NSManagedObject转换为FileSaveModel"

        let model = NSEntityDescription.insertNewObject(forEntityName: entityName, into: appDelegate.context()) as! FileSaveModel

        model.name = name
        model.path = path
        model.type = type.rawValue

        save(model: model, modelContent: modelContent)
    }

    func save(model: FileSaveModel, modelContent: ModelTest) {

        do {
            try appDelegate.context().save()
            print("Save successful")
        } catch {
            fatalError("Failure to save context: \(error)")
        }
    }

获取这样的数据但不返回FileSaveModel数组只返回NSManagedObject数组

func fetchAllModels() {
        let fetchItems = NSFetchRequest<NSFetchRequestResult>(entityName: entityName)

        do {

            let fetchedItems = try appDelegate.context().fetch(fetchItems) as! [FileSaveModel]

            if fetchedItems.count>0 {
                print(fetchedItems[0].name)
            }

        } catch {
            fatalError("Failed to fetch: \(error)")
        }
    }

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题。

选择xcdatamodeld - &gt;您的实体 - &gt;数据模块检查器 - &gt;模块

如果是当前产品模块,请将其更改为全局命名空间