大佬教程收集整理的这篇文章主要介绍了ios – CoreData在设备上发生错误但在模拟器上很好,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是错误:
我的代码:
Extestion
extension NsmanagedObject { class func GV_New() -> NsmanagedObject { let entity = self.MR_entityDescription(); let parentContext = NsmanagedObjectContext.MR_defaultContext(); let childContext = NsmanagedObjectContext.MR_contextWithParent(parentContext); let managedObject = NsmanagedObject(entity: entity,inserTintoManagedObjectContext: childContext); return managedObject; } class func GV_Insert(object: NsmanagedObject) -> Bool { var result: Bool = false; let keyPath = "userInfO.PrimaryKey"; let primaryKey = self.MR_entityDescription().valueForKeyPath(keyPath) as String!; if primaryKey != nil { if (self.MR_findFirstByAttribute(primaryKey,withValue: object.valueForKey(primaryKey)) != nil) { result = false; } else { let managedObjectId = object.objectID; let managedObjectContext = object.managedObjectContext; let managedObject = managedObjectContext!.exisTingObjectWithID(managedObjectId,error: nil); managedObject?.managedObjectContext?.MR_saveOnlySelfAndWait(); NsmanagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreAndWait(); result = true; } } return result; } }
视图控制器
class ViewController: UIViewController { var camera: Camera!; override func viewDidLoad() { super.viewDidLoad(); println("\(Camera.MR_countOfEntities())"); camera = Camera.GV_New() as Camera; camera.camera_id = 4567; Camera.GV_Insert(camera); println("\(Camera.MR_countOfEntities())"); for (index,value) in enumerate(Camera.MR_findAll()) { let result = value as Camera; println("result: \(value.camera_id)"); } } }
我没有保留子上下文,因为Swift@L_262_6@类变量,
let managedContext = NsmanagedObjectContext.MR_context(); extension NsmanagedObject { class func GV_New() -> NsmanagedObject { return self.MR_createInContext(managedContext) as NsmanagedObject; } class func GV_Insert(object: NsmanagedObject) -> Bool { var result: Bool = false; let keyPath = "userInfO.PrimaryKey"; let primaryKey = self.MR_entityDescription().valueForKeyPath(keyPath) as String!; if primaryKey != nil { if (self.MR_findFirstByAttribute(primaryKey,withValue: object.valueForKey(primaryKey)) != nil) { result = false; } else { object.managedObjectContext?.MR_saveOnlySelfAndWait(); NsmanagedObjectContext.MR_defaultContext().MR_saveToPersistentStoreAndWait(); result = true; } } return result; } }
以上是大佬教程为你收集整理的ios – CoreData在设备上发生错误但在模拟器上很好全部内容,希望文章能够帮你解决ios – CoreData在设备上发生错误但在模拟器上很好所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。