为了账号安全,请及时绑定邮箱和手机立即绑定

如何按属性值对自定义对象数组进行排序

如何按属性值对自定义对象数组进行排序

幕布斯6054654 2019-06-19 10:50:04
如何按属性值对自定义对象数组进行排序假设我们有一个名为ImageFile的自定义类,这个类包含两个属性。class imageFile  {     var fileName = String()     var fileID = Int()}其中很多存储在Array中var images : Array = []var aImage = imageFile()aImage.fileName = "image1.png"aImage.fileID = 101images.append(aImage)aImage = imageFile() aImage.fileName = "image1.png"aImage.fileID = 202images.append(aImage)问题是:如何根据“文件ID”ASC或DESC对图像数组进行排序?
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

首先,将Array声明为类型化数组,以便在迭代时调用方法:

var images : [imageFile] = []

然后你可以简单地做:

SWIFT 2

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

SWIFT 3和SWIFT 4和SWIFT 5

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

上面的例子给出了DESC排序顺序


查看完整回答
反对 回复 2019-06-19
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

这是利用尾随关闭:

images.sorted { $0.fileID < $1.fileID }

在你使用的地方<>分别取决于ASC或DESC。如果要修改images列阵,然后使用以下内容:

images.sort { $0.fileID < $1.fileID }

如果您要重复这样做,并且更愿意定义一个函数,一种方法是:

func sorterForFileIDASC(this:imageFile, that:imageFile) -> Bool {
  return this.fileID > that.fileID}

然后用作:

images.sort(by: sorterForFileIDASC)


查看完整回答
反对 回复 2019-06-19
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

几乎每个人都给多么,怎样让我直接展示一下它的演变过程:

可以使用Array的实例方法:

// general form of closureimages.sortInPlace({ (image1: imageFile, image2: imageFile) -> Bool in return image1.fileID > image2.fileID })
// types of closure's parameters and return value can be inferred by Swift, so they are omitted along with the return arrow (->)
images.sortInPlace({ image1, image2 in return image1.fileID > image2.fileID })// Single-expression closures can implicitly return the result 
of their single expression by omitting the "return" keywordimages.sortInPlace({ image1, image2 in image1.fileID > image2.fileID })
// closure's argument list along with "in" keyword can be omitted, $0, $1, $2, and so on are used to refer the closure's first, second,

 third arguments and so onimages.sortInPlace({ $0.fileID > $1.fileID })// the simplification of the closure is the sameimages = images.sort
 ({ (image1: imageFile, image2: imageFile) -> Bool in return image1.fileID > image2.fileID })images = images.sort({ image1, image2 in return 
 image1.fileID > image2.fileID })images = images.sort({ image1, image2 in image1.fileID > image2.fileID })images = images.sort({ $0.fileID > 
 $1.fileID })

有关排序工作原理的详细说明,请参阅排序函数.


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 695 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信