假设我们有一个名为imageFile的自定义类,这个类包含两个属性:

class imageFile  {
    var fileName = String()
    var fileID = Int()
}

很多都存储在一个数组中:

var images : Array = []

var aImage = imageFile()
aImage.fileName = "image1.png"
aImage.fileID = 101
images.append(aImage)

aImage = imageFile()
aImage.fileName = "image1.png"
aImage.fileID = 202
images.append(aImage)

我如何排序的图像数组由'fileID'升序或降序?


当前回答

Swift 4.0, 4.1和4.2:

首先,我创建了imageFile类型的可变数组,如下所示

var arr = [imageFile]()

创建类型为imageFile的可变对象图像,并为属性赋值,如下所示

var image = imageFile()
image.fileId = 14
image.fileName = "A"

现在,将这个对象追加到数组arr

arr.append(image)

现在,将不同的属性分配给相同的可变对象,即图像

image = imageFile()
image.fileId = 13
image.fileName = "B"

现在,再次将image object追加到数组arr中

arr.append(image)

现在,我们将对数组arr对象中的fileId属性应用升序。使用<符号按升序排列

arr = arr.sorted(by: {$0.fileId < $1.fileId}) // arr has all objects in Ascending order
print("sorted array is",arr[0].fileId)// sorted array is 13
print("sorted array is",arr[1].fileId)//sorted array is 14

现在,我们将在数组arr对象中的fileId属性上应用降序。降序使用>符号

arr = arr.sorted(by: {$0.fileId > $1.fileId}) // arr has all objects in Descending order
print("Unsorted array is",arr[0].fileId)// Unsorted array is 14
print("Unsorted array is",arr[1].fileId)// Unsorted array is 13

在Swift 4.1和4.2中,用于排序使用

let sortedArr = arr.sorted { (id1, id2) -> Bool in
  return id1.fileId < id2.fileId // Use > for Descending order
}

其他回答

你也可以这样做

images = sorted(images) {$0.fileID > $1.fileID}

你的图像数组会以排序的方式存储

从fileID属性返回一个排序的数组,方法如下:

斯威夫特2

let sortedArray = images.sorted({ $0.fileID > $1.fileID })

Swift 3或4

let sortedArray = images.sorted(by: { $0.fileID > $1.fileID })

斯威夫特5.0

let sortedArray = images.sorted {
    $0.fileID < $1.fileID
}

如果你不使用自定义对象,而是使用值类型来实现可比协议(Int, String等),你可以简单地这样做:

myArray.sort(>) //sort descending order

一个例子:

struct MyStruct: Comparable {
    var name = "Untitled"
}

func <(lhs: MyStruct, rhs: MyStruct) -> Bool {
    return lhs.name < rhs.name
}
// Implementation of == required by Equatable
func ==(lhs: MyStruct, rhs: MyStruct) -> Bool {
    return lhs.name == rhs.name
}

let value1 = MyStruct()
var value2 = MyStruct()

value2.name = "A New Name"

var anArray:[MyStruct] = []
anArray.append(value1)
anArray.append(value2)

anArray.sort(>) // This will sort the array in descending order

我是这样做的,而且很管用:

var图像=[图像文件]() 图片社。* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Swift 3 & 4 & 5

我遇到了一些关于小写和大写的问题

所以我写了这个代码

let sortedImages = images.sorted(by: { $0.fileID.lowercased() < $1.fileID.lowercased() })

然后使用sortedImages