Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
使用选定属性和排序顺序对Swift 4.2数组进行排序_Swift_Sorting - Fatal编程技术网

使用选定属性和排序顺序对Swift 4.2数组进行排序

使用选定属性和排序顺序对Swift 4.2数组进行排序,swift,sorting,Swift,Sorting,我正在尝试对swift 4.2中的自定义结构数组进行排序。我想以这样一种方式来解决它 具有trueisSelectedbool属性的对象始终位于顶部,所有其他对象应使用名为sortOrder(Int)的属性升序排序 具有isSelected属性的对象也应按sortOrder(升序)排序。 到目前为止,我能够实现第一个目标,但第二个目标有些问题 这是我的密码: myArray.sort { (item1, item2) -> Bool in if item1.isS

我正在尝试对swift 4.2中的自定义结构数组进行排序。我想以这样一种方式来解决它

  • 具有true
    isSelected
    bool属性的对象始终位于顶部,所有其他对象应使用名为
    sortOrder
    (Int)的属性升序排序
  • 具有
    isSelected
    属性的对象也应按
    sortOrder
    (升序)排序。 到目前为止,我能够实现第一个目标,但第二个目标有些问题 这是我的密码:

        myArray.sort { (item1, item2) -> Bool in
    
            if item1.isSelected ?? false && item2.isSelected == false  {
          return true
        } else if item2.isSelected ?? false {
         return false
        }
    
        return item1. sortOrder < item2. sortOrder
          }
    
    myArray.sort{(item1,item2)->Bool-in
    如果item1.isSelected??false&&item2.isSelected==false{
    返回真值
    }否则,如果选择项目2.1,则为假{
    返回错误
    }
    返回item1.sortOrder

    请帮助实现第二个目标。谢谢。

    要对阵列进行适当排序,请执行以下操作:

    myArray.sort { item1, item2 in 
       if item1.isSelected == item2.isSelected {
          return item1.sortOrder < item2.sortOrder 
       }
       return item1.isSelected && !item2.isSelected 
    }
    
    myArray.sort{item1,item2在
    如果item1.isSelected==item2.isSelected{
    返回item1.sortOrder
    获取新的排序数组的步骤

    let sortedArray = myArray.sorted { item1, item2 in 
       if item1.isSelected == item2.isSelected {
          return item1.sortOrder < item2.sortOrder 
       }
       return item1.isSelected && !item2.isSelected 
    }
    
    让sortedArray=myArray.sorted{item1,item2在
    如果item1.isSelected==item2.isSelected{
    返回item1.sortOrder
    要在适当位置对阵列进行排序,请执行以下操作:

    myArray.sort { item1, item2 in 
       if item1.isSelected == item2.isSelected {
          return item1.sortOrder < item2.sortOrder 
       }
       return item1.isSelected && !item2.isSelected 
    }
    
    myArray.sort{item1,item2在
    如果item1.isSelected==item2.isSelected{
    返回item1.sortOrder
    获取新的排序数组的步骤

    let sortedArray = myArray.sorted { item1, item2 in 
       if item1.isSelected == item2.isSelected {
          return item1.sortOrder < item2.sortOrder 
       }
       return item1.isSelected && !item2.isSelected 
    }
    
    让sortedArray=myArray.sorted{item1,item2在
    如果item1.isSelected==item2.isSelected{
    返回item1.sortOrder
    回答得不错,伙计!回答得好,伙计!