ios URLResourceValues不适用于重命名文件

kmbjn2e3  于 2023-01-14  发布在  iOS
关注(0)|答案(1)|浏览(151)

我必须重命名文档目录中的一些文件。我正在尝试使用URLResourceValues:

let fileURLs = try! FileManager.default.contentsOfDirectory(at: directory, includingPropertiesForKeys: nil)
fileURLS.forEach { fileURL in
    // calculate newFileName
    var resourceValues = URLResourceValues()
    resourceValues.name = newFilename
    var mutableFileURL = fileURL
    try! mutableFileURL.setResourceValues(resourceValues)
}

设置resourceValues.name后,我在控制台中看到以下内容...

key NSMutableString "NSURLNameKey"  0x00000001e7a8a368
value   NSString    "newName.jpg"   0x0000000283f61fe0

所以这部分是工作的。try!完成而没有崩溃,所以没有抛出错误。但是mutableFileURL没有改变。它使用旧名称,而不是新名称。
我在文档中看到设置只读属性或设置不支持的属性将被忽略,并且不会抛出错误。但在我的研究中,我看到这种方法通常用于重命名文件。我不认为这是一个写权限的事情,因为如果我使用旧的方法,它工作得很好:

try! FileManager.default.moveItem(at: fileURL, to: newFileURL)

我能错过什么呢?
P.S.应用程序面向iOS 14,在运行iOS 16.1的真实的设备上运行

0aydgbwb

0aydgbwb1#

你还没有表现出你是如何知道事情不起作用的,但你说:
mutableFileURL不变
你的代码不应该改变mutableFileURL,如果你想看看mutableFileURL发生了什么,那就是问题所在。
这里的URL只是一个指向磁盘上文件的指针,这就是setResourceValues方法的全部意义,你的代码改变了磁盘上文件的名称(指针mutableFileURL现在是无效的,应该被丢弃)。
如果您 * 重新获取documents目录的内容,* 您将看到您的代码工作得很好。

相关问题