ios - 如何在 Swift 最后一个索引处添加元素

标签 ios swift nsmutablearray swift2

我从服务器获取一个数组并将其存储在 NSMutableArray 中。现在的问题是数组没有排序。例如。数组= [“A”,“B”,“无”,“C”,“D”]。我想对其进行排序并将“无”元素放在最后。即[“A”,“B”,“C”,“D”,“无”]。尝试交换但无法匹配条件,因为数组将来可能会增加。检查下面的代码,它没有按预期工作。

if array.containsObject( "None" ){
        print("\(array.indexOfObject("None"))")
        let noneIndex = array.indexOfObject("None")
        print(noneIndex)
        array.removeObject(noneIndex)
        print("Remove Array:-\(array)")
        array.insertObject(noneIndex, atIndex: (array.lastObject?.index)!)
        print("Sorted Array:-\(array)")
    }

最佳答案

也许我误解了您需要做什么,但如果您只想按字母顺序排序,可以在数组上使用 sorted()

您还可以使用filter从数组中删除“None”,对其进行排序,然后将“None”附加为最后一个元素

例如,如果您有

let elements = ["Alpha", "Bold", "None", "charlie", "Delta", "echo", "zebra", "k"]

您可以从过滤它开始:

let filteredElements = elements.filter { $0.uppercased() != "NONE"}

对过滤后的元素进行排序:

var sortedElements = filteredElements.sorted { $0.uppercased() < $1.uppercased()}

附加“无”

sortedElements.append("None") // ["Alpha", "Bold", "charlie", "Delta", "echo", "k", "zebra", "None"]

然后就完成了。

这里是合并的:

let lastElement = "None"
let elements = ["Alpha", "Bold", "None", "charlie", "Delta", "echo", "zebra", "k"]
var sortedElements = elements.filter({$0.uppercased() != lastElement.uppercased()}).sorted(by: {$0.uppercased() < $1.uppercased()})
sortedElements.append(lastElement)

希望对您有帮助。

关于ios - 如何在 Swift 最后一个索引处添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41158866/

相关文章:

iOS - 无法使用 NSDateFormatter 解析日期字符串 "31-07-2014 00:00 BST"以获取字符串 08-31-14

android - 使用 SSL 证书为 iOS 9 开发时管理开发环境

ios - swift - NSPredicate

ios - NSMutableArray 实例在 SWIFT 中默认是可选的吗?

ios - 为什么我在没有互联网的情况下通过 Game Center 发送数据时没有收到错误消息?

ios - 找不到 minizip/unzip.h 文件

ios - 从完成处理程序的 NSURLSession DownloadTaskWithRequest 获取数据

ios - ARKit 插入 VC 捕获事件 Swift 4

json - 无法分配给类型 ' AnyObject?!' 的不可变表达式

objective-c - 如何在数组对象中使用 objectAtIndex