订购 NSURL 数组

2024-04-16

我正在将大量图像路径加载到 NSURL 中。 这些图像位于按 1.PNG、2.PNG、3.PNG 到 1500.PNG 顺序排列的文件夹中。
当我尝试加载它们时:

let imagePath = path + "/images"
        let url = NSURL(fileURLWithPath: imagePath)
        print(url)
        let fileManager = NSFileManager.defaultManager()
        let properties = [NSURLLocalizedLabelKey,
                          NSURLCreationDateKey, NSURLLocalizedTypeDescriptionKey]

        do {
            imageURLs = try fileManager.contentsOfDirectoryAtURL(url, includingPropertiesForKeys: properties, options:NSDirectoryEnumerationOptions.SkipsHiddenFiles)
        } catch let error1 as NSError {
            print(error1.description)
        }

imageURLs 数组填充为:

imageURLs[0] = ...\0.PNG
imageURLs[1] = ...\1.PNG
imageURLs[2] = ...\100.PNG
imageURLs[3] = ...\1000.PNG

而且不是按数字顺序!
有人可以帮助对 imageURL 进行排序,或者在我加载图像路径时或加载图像路径后进行排序吗?


当您想按数字对文件进行排序时,您必须首先解析路径才能实现它,所以假设我们有以下数组NSURL对象:

var urls = [NSURL(string: "file:///path/to/user/folder/2.PNG")!, NSURL(string: "file:///path/to/user/folder/100.PNG")!, NSURL(string: "file:///path/to/user/folder/101.PNG")!, NSURL(string: "file:///path/to/user/folder/1.PNG")! ]

我们可以使用pathComponents https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/#//apple_ref/occ/instp/NSURL/pathComponents属性来提取包含路径中所有组件的数组NSURL (e.g ["/", "path", "to", "user", "folder", "2.PNG"]).

如果我们看到,我们可以按数组中的最后一个元素对文件进行排序,该元素是文件名,删除扩展名和点("."),在本例中为数字。让我们看看如何在下面的代码中做到这一点:

urls.sortInPlace {

   // number of elements in each array
   let c1 = $0.pathComponents!.count - 1
   let c2 = $1.pathComponents!.count - 1

   // the filename of each file
   var v1 = $0.pathComponents![c1].componentsSeparatedByString(".")
   var v2 = $1.pathComponents![c2].componentsSeparatedByString(".")

   return Int(v1[0]) < Int(v2[0])
}

在上面的代码中我们使用了函数sortInPlace以避免创建另一个元素已排序的数组,但是您可以使用sort相反,如果你愿意的话。代码中的另一个重要点是这一行return Int(v1[0]) < Int(v2[0]),在这一行中我们必须将字符串中的数字转换为实数,因为如果我们比较两个字符串"2" and "100"第二个小于大于,因为字符串是按字典顺序比较的。

所以数组urls应该像下面这样:

[file:///path/to/user/folder/1.PNG, file:///path/to/user/folder/2.PNG, file:///path/to/user/folder/100.PNG, file:///path/to/user/folder/101.PNG]

EDIT:

两个函数pathComponents and componentsSeparatedByString增加空间复杂度sortInPlace算法,如果您可以确保文件的路径始终相同,除了文件名应该是数字之外,您可以使用以下代码:

urls.sortInPlace { $0.absoluteString.compare(
                   $1.absoluteString, options: .NumericSearch) == .OrderedAscending
}

我希望这对你有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

订购 NSURL 数组 的相关文章

  • 使用 Metal 高效计算 UIImage/CIImage 中有多少透明像素

    我们可以计算有多少个透明像素的最快方法是什么CIImage UIImage 例如 如果我们谈论效率 我的第一个想法是使用Metal Kernel使用任一CIColorKernel左右 但我不明白如何使用它来输出 计数 我还有其他想法 使用某
  • 如何读取 Xcode 6.1 Instruments .trace 文件?

    我一直在尝试阅读 trace文件 我使用生成的custom仪器模板 仪器 自动机 分配 Leaks using 仪器 https developer apple com library mac documentation Developer
  • 如何使用存储在 Cocoa Touch 框架中的 Localized.strings?

    我想为 CocoaTouch 框架添加多语言支持 问题 可本地化的字符串我创建的文件仅被使用NSLocalizedString当它是主应用程序及其目标的一部分时 我想将其存储在框架内以将事物分开 我怎样才能使用可本地化的字符串当放置在 Co
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • 在completionHandlers中存储值 - Swift

    我正在创建一个completionHandler它返回一个字典 但是当我在另一个类中调用这个方法时 它的值是零 func fetchLatestPosts completionHandler responseDict NSDictionar
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C
  • SwiftUI - 预览时未知的预览提供程序“ContentView_Previews_”。发生在一个全新的项目中

    我有这个简单的观点 import SwiftUI struct ContentView View var body some View Text Hello struct ContentView Previews PreviewProvid
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝
  • 来自索引范围 Swift 的新数组

    我怎样才能做这样的事情 从数组中取出前 n 个元素 newNumbers numbers 0 n 目前出现以下错误 error could not find an overload for subscript that accepts th
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓
  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • 针对 iOS 10.3 进行编译,但模块“SwiftUICharts”的最低部署目标为 iOS 13.0

    知道如何仅在 iOS 版本超过 iOS 13 时导入 SwiftUICharts 框架吗 我通过 文件 gt Swift 包 gt 添加包依赖项 添加了此框架 我的应用程序目标必须是 iOS 10 我将此框架导入到 swiftui 控制器中
  • 如何使用 Swift 将“完成”按钮添加到 iOS 中的数字键盘?

    它在默认键盘上工作得很好 但我无法让它在数字键盘上工作 有任何想法吗 据我所知 你不能在键盘部分添加 完成 按钮 你应该添加一个inputAccessoryView to the UITextField or UITextView 如果这就
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • 检查 Swift 中关联类型是否符合协议

    在类似情况下 如何检查对象是否符合 可表示 协议 protocol Representable associatedtype RepresentType var representType RepresentType get set cla
  • 如何对STL向量进行排序?

    我想排序一个vector vector
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且

随机推荐

  • 压缩从设备获取或从库、iOS 中选择的图像

    在我的应用程序中 用户可以从设备拍摄照片或从库上传照片以将其设置为个人资料照片 现在 当用户完成后 我需要将该图像上传到服务器 通常从设备获取的图像大小为 5 6MB 我需要在上传到服务器之前将其压缩到 25KB 所以我使用以下方法 voi
  • 多标签 OneVsRestClassifier 的网格搜索?

    我正在对多标签数据进行网格搜索 如下所示 imports from sklearn svm import SVC as classifier from sklearn pipeline import Pipeline from sklear
  • Ubuntu 错误“在此 WSL 2 发行版中找不到命令‘docker’。”

    我在 Ubuntu 上运行 WSL 2 在计算机上启动和运行 docker 时遇到一些问题 我安装了 Docker Desktop 并在后台运行 并且还启用了与 Ubuntu 的 WSL 集成 当我尝试运行简单的 docker 命令时 例如
  • 在javascript中将Json时间戳转换为正常日期和时间

    我有一个 Json 时间戳 我想使用 javascript 将其转换为简单的日期时间格式 我需要以下格式的日期和时间 dd mm yyyy hr mn 这是一个示例 json 日期 我希望提取时间戳 timestamp 1326439500
  • 代码编译时方法中函数执行的计数

    我想计算函数 ExecuteAction 在类方法中出现的次数 public class A B public void X ExecuteAction ExecuteAction 得分为 2 因为 ExecuteAction 出现了 2
  • 将文件夹名称添加到输出 Pig Latin

    我在 HDFS 中有下一个目录结构 logs folder 2021 03 01 log1 log2 log3 2021 03 02 log1 log2 2021 03 03 log1 log2 日志由文本数据组成 数据中没有日期 因为它已
  • jQuery Mobile 与 KnockoutJS ListView 问题

    我正在尝试的这个例子 列表视图最终并没有漂亮的外观 谁能建议我做错了什么 这种情况特别发生在 data inset true 上 http jsfiddle net xQ9Uu 1 http jsfiddle net xQ9Uu 1 如果我
  • 立即将已定义的函数应用于所有数据帧[重复]

    这个问题在这里已经有答案了 我已经定义了一个函数 效果很好 尽管如此 我在工作空间中有 20 个数据框 我想要lapply相同的功能 dat1 至 dat20 到目前为止 它看起来像这样 dat1 lt func dat dat1 dat2
  • 为什么 64 位 Delphi 应用程序计算的结果与 32 位构建不同?

    我们最近开始创建应用程序的 64 位版本 在比较测试中 我们发现 64 位版本的计算方式有所不同 我有一个代码示例 演示了两个版本之间的差异 var currPercent currGross currCalcValue Currency
  • 需要从the_content()获取所有;在 WordPress 中?

    我最近刚刚将博客网站上的所有内容导入到 WordPress 中 我需要稍微整理一下 我正在 single php 中工作 我想得到每个 a img src a from the content 我的 php 充其量只是有点粗制滥造 我知道这
  • 如何解决远程 UWP AppService 问题?

    我正在 C 中使用远程 UWP AppServices 并且遇到了一个非常早期的障碍 获取RemoteSystem实例 我按照教程进行操作https msdn microsoft com en us windows uwp launch r
  • RestSharp 到 WCF 作为 JSON 日期格式化/序列化

    我有一个 WCF 方法 它接受 时间戳 列表 public bool SyncTimestamps IList
  • 更改 Drupal 中的节点创建标题?

    假设我有一个名为 产品 的节点 当我创建这样的节点时 它将始终显示 创建产品 作为节点的标题 创建节点时如何更改此标题 你的意思是你有一个内容类型 http drupal org node 21947 产品 创建 产品 类型的节点时的 创建
  • JavaScript 正则表达式中包含的拉丁字符

    我希望将下面的拉丁字符包含在 JavaScript 正则表达式中以进行字符串验证 到目前为止 我只有一个基本的字符串正则表达式 var stringReg a zA Z i 提前致谢 斯卡洛 我在用着 A z u00C0 u00ff s 作
  • 如何为 casper.repeat 设置变量值

    我想根据来自运行 CasperJS 的页面的变量值重复使用 CasperJS 的步骤 为了获得这个值 我做了类似的事情 casper waitForSelector xxxx function myvalue this evaluate f
  • iOS 绑定 javascript 函数来点击

    这在桌面 safari 中有效 但在 iOS 版本中不会弹出警报 是否可以绑定到 iOS 中的 html 元素 每当用户单击页面上的其他位置时 我想关闭下拉菜单 html bind click function alert clicked
  • 如何在 iPhone 上的 ViewController 之间共享对象?

    我的应用程序是一个选项卡栏应用程序 每个选项卡都有一个单独的视图控制器 我的第一个视图控制器 A 中有一个对象 其中包含我存储的所有应用程序数据 请忽略 NSUserDefaults 当我按下第二个视图控制器 B 上的按钮时 需要由第二个视
  • 在 Spark 中,从哈希映射创建数据帧,其中键作为列名称,值作为行

    我有一个数据框 我有一个列 它是数据框中的地图 如下所示 scala gt df printSchema root A1 map nullable true key string value string valueContainsNull
  • 无法从 vs 2015 安装程序安装 xamarin

    我安装了 vs 2015 升级 1 并尝试从设置中安装 Xamarin 但是当我尝试安装它时 最后收到此错误消息 C Net Xamarin 安装程序在安装此软件包时遇到意外错误 这可能表明软件包有问题 错误代码为2711 我该如何解决这个
  • 订购 NSURL 数组

    我正在将大量图像路径加载到 NSURL 中 这些图像位于按 1 PNG 2 PNG 3 PNG 到 1500 PNG 顺序排列的文件夹中 当我尝试加载它们时 let imagePath path images let url NSURL f