数组排序 - Swift 如何排序 A-Z

时间:2021-05-28 07:52:01

标签: arrays swift

我有一个 pdf 文件数组(见附件截图),我需要按字母顺序排序。这是生成数组的代码,有人可以建议更改以对数组进行排序吗?

import UIKit

var pdfsArray = [String]()

class PDFListViewController: UITableViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let fm = FileManager.default
        
        let path = Bundle.main.resourcePath!

        let items = try! fm.contentsOfDirectory(atPath: path)
        
        for item in items {
            if item.hasSuffix(".pdf") {
               
                pdfsArray.append(item.uppercased())
                
            }
            let sortedFiles = pdfsArray.sorted()
             pdfsArray = sortedFiles
        }

enter image description here

2 个答案:

答案 0 :(得分:0)

很简单,您只需调用 swift 的 sort(或 sorted)函数并提供 sort-function 以按数值排序:

var array = ["Part 45", "Part 1", "Part 10", "Part 20", "Part 100", "Part 2"]
array.sort { st1, st2 in
    st1.compare(st2, options: .numeric) == .orderedAscending
}

答案 1 :(得分:0)

因此,根据您的要求,您需要将 item string 分隔成一个 [string]

数组

第一部分包含“零件编号”,第二部分包含 pdf 名称。

struct PDFile : CustomStringConvertible {
    var part : String
    var name : String
    
    init(name: String) {

        let arr = name.components(separatedBy: " ")

        self.name = arr.dropFirst(2).joined(separator: " ")
        self.part = arr[0] + " " + arr[1]
    }
    
    var description: String {
        return "\"\(part) \(name)\""
    }
}

然后你可以改变你的

var pdfsArray = [String]()

var pdfsArray = [PDFile]()

然后改变

pdfsArray.append(item.uppercased())

pdfsArray.append(PDFile(name: item.uppercased())

并通过使用对数组进行排序

pdfsArray.sort { $0.name < $1.name } 

这将得到你想要的输出

["PART 1 DEFINITIONS ABBREVIATIONS AND UNITS OF MEASUREMENT.PDF", "PART 101 GYROGLIDERS-PARASAILS-UNMANNED-AIRCRAFT-INCL-BALLOONS-KITES-ROCKETS.PDF", "PART 100 SAFETY AND EQUALITY MANAGEMENT SYSTEMS.PDF", "PART 102 UNMANNED-AIRCRAFT-OPERATOR-CERTIFICATION.PDF"]
相关问题