Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Arrays 敏捷的结构的排序数组_Arrays_Xcode_Swift_Sorting - Fatal编程技术网

Arrays 敏捷的结构的排序数组

Arrays 敏捷的结构的排序数组,arrays,xcode,swift,sorting,Arrays,Xcode,Swift,Sorting,我需要订购一个struct数组 我试过: let aRes = self.aSoundTracks_Filtered.sort{ $0.st < $1.st } 我的结构是这样的: var aSoundTracks_Filtered = [SoundTrack]() struct SoundTrack { let sID : Int let st : String } 当您在操场上以以下方式进行测试时,您的代码运行良好: struct SoundTrack {

我需要订购一个
struct
数组

我试过:

let aRes =  self.aSoundTracks_Filtered.sort{ $0.st < $1.st }
我的结构是这样的:

   var aSoundTracks_Filtered = [SoundTrack]()
struct SoundTrack {
    let sID : Int
    let st : String
}

当您在操场上以以下方式进行测试时,您的代码运行良好:

struct SoundTrack {
   let sID : Int
   let st : String
}

var aSoundTracks_Filtered = [SoundTrack]()

aSoundTracks_Filtered.append(SoundTrack(sID: 1, st: "a"))
aSoundTracks_Filtered.append(SoundTrack(sID: 2, st: "b"))

aSoundTracks_Filtered.sort{ $0.st > $1.st } // [{sID 2, st "b"}, {sID 1, st "a"}]
但是
sort()
在适当的位置对数组进行排序。您可能希望使用的是
sorted()
,它不会修改原始数组并返回新的排序数组:

let aRes = aSoundTracks_Filtered.sorted{ $0.st > $1.st }

上面的代码是针对Swift 1.2的,对于Swift 2.0,返回排序数组再次被称为“sort”,但它现在是(协议扩展)方法,而不是全局函数。我希望这能对你有所帮助。

所以,这其实很简单。但是,我想知道当您访问阵列时,
self
从何而来。我不知道它属于哪个类,如果它属于结构本身(我不知道为什么,只是以防万一),在更改结构属性的值时,必须将函数标记为变异。第二件事实际上是你必须使用花括号:

self.aSoundTracks_Filtered.sort({$0.st < $1.st})
self.aSoundTracks\u Filtered.sort({$0.st<$1.st})

我假设的
aSoundTracks\u Filtered
是您的数组?它包含什么类型,你能提供相应的代码吗?看起来像是一个类型推断问题,请尝试
{(a,b)->Bool in a.st
我已经为问题添加了信息。希望它能帮助OISDK:let hasPrefixAndSuffix=self.aSoundTracks_Filtered.sort{(a,b)->Bool in a.st”的参数列表的“sorted”的重载,现在可以工作了。谢谢:)
aSoundTracks\u Filtered
是一个数组而不是一个函数,请参见声明,括号的使用是可选的,您可以调用
sort
,而不使用它,请参见我的回答我当然知道-您所做的是使用尾部闭包,因此事实上,是的,您可以消除偏执。但是,将值强制转换为隐式展开的可选值是不合适的,正如我以前在您的回答中所看到的,正如您在我的上一个回答中所看到的,显式强制转换不是可选的。您可以在我的回答中阅读更多关于它的内容。您的另一个回答暗示了这样一个事实,即您必须在订阅字典时展开可选值可选-完全不同的主题Your 2 suggestions return无法使用类型为“(((,-)>)”的参数列表调用“sort”:(我使用Xcode 6.4和Swift 1.2进行了测试,效果很好。谢谢!…对我也有轻微的修改
self.aSoundTracks_Filtered.sort({$0.st < $1.st})