如何将数据从 iOS 中的数据模型存储到核心数据中并以数据模型的格式获取
Posted
技术标签:
【中文标题】如何将数据从 iOS 中的数据模型存储到核心数据中并以数据模型的格式获取【英文标题】:How to store data in Core data from Data model in iOS and get in the format of data model 【发布时间】:2016-11-16 11:44:29 【问题描述】:我想在 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)")
【问题讨论】:
错误信息真的是Cannot cast nsobjectmodel to FileSaveModel
吗?因为不存在NSObjectModel
这样的类,并且因为获取错误消息的正确文本对于解决错误至关重要。
@TomHarrington 的确切错误是“无法将 NSManagedObject 转换为 FileSaveModel”。
【参考方案1】:
如果我理解你的问题。
选择 xcdatamodeld -> 你的实体 -> 数据模块检查器 -> 模块
如果是当前产品模块,则将其更改为全局命名空间
【讨论】:
以上是关于如何将数据从 iOS 中的数据模型存储到核心数据中并以数据模型的格式获取的主要内容,如果未能解决你的问题,请参考以下文章