Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 获取最新核心数据-id,并为新插入提供-(&x2B;1)_Ios_Swift_Core Data_Int - Fatal编程技术网

Ios 获取最新核心数据-id,并为新插入提供-(&x2B;1)

Ios 获取最新核心数据-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

我有coredata
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值会更好。