Swift - 如何在 Core Data 中获取最后插入的 id,将其存储在 NSUserDefault 和谓词中
Swift - How to get last insert id in Core Data, store it in NSUserDefault and predicate
我已经创建了一个新实体并保存了它。然后我想从第一个实体中获取最后一个插入 ID,然后将其作为参考 ID 保存到第二个实体中。
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let userContext: NSManagedObjectContext = appDel.managedObjectContext!
let userEn = NSEntityDescription.entityForName("UserEntity", inManagedObjectContext: userContext)
var newUser = Users(entity: userEn!, insertIntoManagedObjectContext: userContext)
newUser.uname = "Nurdin"
userContext.save(nil)
那么如何将最后插入的id保存到NSUserDefault中呢?因为我想用 CoreData 中的现有数据进行谓词以进行匹配。
你神奇地向核心数据询问最新的id...
但以你为例。只需在保存后添加一行以存储ID...
let string = user.objectID.URIRepresentation().absoluteString
NSUserDefaults.standardUserDefaults().setObject(string, forKey: "userID")
...反之亦然...
let oidString = NSUserDefaults.standardUserDefaults().stringForKey("userID")
let url = NSURL(string: oidString)
let objectID = persistentStoreCoordinator.managedObjectIDForURIRepresentation(url)
Swift 5
core data中没有这种获取最后保存的Id的功能,但是可以通过NSUserDeafult
这里我们创建了两个函数用于保存和检索最后保存的 ID。
fileprivate func getLastId() -> Int {
let objUserDefault = UserDefaults.standard
if let userID = objUserDefault.value(forKey: "TaskId") as? Int {
print(userID + 1)
return userID + 1
}
return 1
}
fileprivate func setTaskId(id: Int) {
let objUserDefault = UserDefaults.standard
objUserDefault.setValue(id, forKey: "TaskId")
objUserDefault.synchronize()
}
在 getLastId() 中,我们正在检索 id 并增加 1 以保存当前记录。如果它是第一次保存,它会给你 1.
在 setTaskId() 中,我们只是存储更新后的值。
我已经创建了一个新实体并保存了它。然后我想从第一个实体中获取最后一个插入 ID,然后将其作为参考 ID 保存到第二个实体中。
let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let userContext: NSManagedObjectContext = appDel.managedObjectContext!
let userEn = NSEntityDescription.entityForName("UserEntity", inManagedObjectContext: userContext)
var newUser = Users(entity: userEn!, insertIntoManagedObjectContext: userContext)
newUser.uname = "Nurdin"
userContext.save(nil)
那么如何将最后插入的id保存到NSUserDefault中呢?因为我想用 CoreData 中的现有数据进行谓词以进行匹配。
你神奇地向核心数据询问最新的id...
但以你为例。只需在保存后添加一行以存储ID...
let string = user.objectID.URIRepresentation().absoluteString
NSUserDefaults.standardUserDefaults().setObject(string, forKey: "userID")
...反之亦然...
let oidString = NSUserDefaults.standardUserDefaults().stringForKey("userID")
let url = NSURL(string: oidString)
let objectID = persistentStoreCoordinator.managedObjectIDForURIRepresentation(url)
Swift 5
core data中没有这种获取最后保存的Id的功能,但是可以通过NSUserDeafult
这里我们创建了两个函数用于保存和检索最后保存的 ID。
fileprivate func getLastId() -> Int {
let objUserDefault = UserDefaults.standard
if let userID = objUserDefault.value(forKey: "TaskId") as? Int {
print(userID + 1)
return userID + 1
}
return 1
}
fileprivate func setTaskId(id: Int) {
let objUserDefault = UserDefaults.standard
objUserDefault.setValue(id, forKey: "TaskId")
objUserDefault.synchronize()
}
在 getLastId() 中,我们正在检索 id 并增加 1 以保存当前记录。如果它是第一次保存,它会给你 1.
在 setTaskId() 中,我们只是存储更新后的值。