gpt4 book ai didi

ios - 在不保存的情况下创建 nsmanagedobject [@Example]

转载 作者:行者123 更新时间:2023-11-29 10:33:14 24 4
gpt4 key购买 nike

我想创建一个 NSManagedObject 但不立即保存。

在哪里可以找到创建临时 NSmanagedObject 的示例?

最佳答案

已在 IOS7、IOS8 上测试

创建 tmp NSManagedContext :为了确保当您的上下文将被 dealloc 时您的 NSManagedObject 不会为 nil 在您的中创建一个临时的 NSManagedContext应用委托(delegate)。

在文件 AppDelegate.swift 中

import UIKit
import CoreData

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

private(set) var tmpContext : NSManagedObjectContext = NSManagedObjectContext()

....

}

创建一个 NSManagedObject :调用您的 customfile.swift tmp 和主上下文。主要上下文将用于在您的 NSManagedObject 实例处访问您的模型。

    // CONTEXT
let tmpContext = (UIApplication.sharedApplication().delegate as AppDelegate).tmpContext
let managedContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!

// ENTITY
let entity = NSEntityDescription.entityForName("MY_ENTITY_NAME", inManagedObjectContext: managedContext)
let obj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: tmpContext)

保存你的 NSManagedObject :不幸的是你不能通过传递主上下文来保存你的对象。为避免,您需要复制所有 NSManagedObject

var error : NSError?

// CREATE YOUR NSManagedObject
let managedContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
let entity = NSEntityDescription.entityForName("MY_ENTITY_NAME", inManagedObjectContext: managedContext)
let newObj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)


// COLLECT ALL VALUE SET OF YOUR OBJ
let keysObj = (obj.entity.attributesByName as NSDictionary).allKeys
let dictObj = track.dictionaryWithValuesForKeys(keysObj)


newObj.setValuesForKeysWithDictionary(dictObj)

// SAVE ALL

managedContext.processPendingChanges()
managedContext.insertObject(newObj)
managedContext.save(&error) // dont forget to check

关于ios - 在不保存的情况下创建 nsmanagedobject [@Example],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com