Ios 获取最新核心数据-id,并为新插入提供-(&x2B;1)
我有coredataIos 获取最新核心数据-id,并为新插入提供-(&x2B;1),ios,swift,core-data,int,Ios,Swift,Core Data,Int,我有coredatauser表,里面有 用户 id(int32) 名称(字符串) 我想首先查看最新的id,例如,我想做let newid=latestid(来自用户表)-(1) 我的用户表有 id=0 name=Mary id=-1 name=john 我想要新的插入id必须是-2 我怎么做 我的密码在下面 let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "user") let
user
表,里面有
用户
id(int32)
名称(字符串)
我想首先查看最新的id,例如,我想做let newid=latestid(来自用户表)-(1)
我的用户表有
id=0 name=Mary
id=-1 name=john
我想要新的插入id必须是-2
我怎么做
我的密码在下面
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "user")
let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
var newid = Int32()
do {
let result = try context.fetch(fetchRequest).last as! user!
if result != nil {
if Int((result?.id)!) < 0 {
let lw = Int((result?.id)!)
newid = Int32(Int(lw - (1)))
}else{
newid = Int32(Int((result?.id)!) - 1)
}
}
} catch let error as NSError {
NSLog("Error \(error)")
}
let Add = NSEntityDescription.insertNewObject(forEntityName: "user", into:context) as! user
Add.id = Int32(newid)
Add.name = name.text
(UIApplication.shared.delegate as! AppDelegate).saveContext()
print(newid)
let fetchRequest=NSFetchRequest(entityName:“用户”)
让sortDescriptor=NSSortDescriptor(键:“id”,升序:true)
fetchRequest.sortDescriptors=[sortDescriptor]
var newid=Int32()
做{
让result=try context.fetch(fetchRequest).last as!user!
如果结果为!=nil{
如果Int((result?.id)!)小于0{
设lw=Int((结果?.id)!)
newid=Int32(Int(lw-(1)))
}否则{
newid=Int32(Int((result?.id)!)-1)
}
}
}将let错误捕获为NSError{
NSLog(“错误\(错误)”)
}
让Add=NSEntityDescription.insertNewObject(forEntityName:“user”,进入:context)为!用户
Add.id=Int32(newid)
Add.name=name.text
(UIApplication.shared.delegate为!AppDelegate).saveContext()
打印(新ID)
当我尝试这些代码时,第一次执行id=0 true,在我再次尝试后,会给出id-1 true,但当我尝试更多时,会给出id-1所有代码。必须是-2、-3、-4、-5等等。最后我找到了孤子 使用
升序:false
并仅更改
if result != nil {
if Int((result?.id)!) < 0 {
newid = Int((result?.id)!)
}else{
newid = 0
}
newid = Int((result?.id)!) - (+1)
if结果!=零{
如果Int((result?.id)!)小于0{
newid=Int((结果?.id)!)
}否则{
newid=0
}
newid=Int((结果?.id)!)-(+1)
当前按升序排序:-1在0之前,因此数组中的最后一项始终是id=0的对象。因此所有新对象的id=-1。请将排序描述符更改为升序:false
,或将结果设置为上下文.fetch(fetchRequest).首先
。使用这些ID的目标是什么?如果您想通过显示最新创建的ID进行排序,我认为使用creationDate值会更好。