【问题标题】:Array Sorting - Swift How Can Sort A-Z [duplicate]数组排序 - Swift 如何对 A-Z 进行排序 [重复]
【发布时间】:2021-05-28 07:52:01
【问题描述】:

我有一组需要按字母顺序排序的 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
        }

【问题讨论】:

  • 请添加您的图片
  • 排序如何,目前的解决方案有什么问题?
  • 你不应该在全局范围内声明你的变量。搜索如何将数据从一个视图控制器传递到另一个。

标签: arrays swift


【解决方案1】:

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

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
}

【讨论】:

  • 如何在数组中只显示不带 pdf 扩展名的文件名?
  • 首选在顶层使用URL 而不是路径String,您将能够使用deletingPathExension() ?
  • @SkyCruzer 使用 URL resourceValues 的方法并获取 localizedName 值。如果要隐藏扩展,可以将 url resourceValue hasExtensionHidden 设置为 true
  • @SkyCruzer 顺便说一句,当对文件进行排序以像查找器一样向用户显示时,您应该使用变音符号和不区分大小写的 localizedStandardCompare 方法。 只要文件名或其他字符串出现在列表和表格中,且适合 Finder 式排序,就应使用此方法。此方法的确切排序行为在不同的语言环境下有所不同,并且可能会在未来的版本中更改。此方法使用当前语言环境。
  • 非常感谢大家。我是这个应用程序开发领域的新手,我感谢您的所有回复。与大家一起工作很棒。
猜你喜欢
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2017-12-30
相关资源
最近更新 更多