macOS sierra,iMac,swift3
我正在尝试编写一个可以更改文件创建日期的程序。 我有很多扫描的照片和文档,我希望能够按字母或时间顺序存储。
我已经在Objective-C中实现了这一点,但我正在迅速挣扎。 Apple API>基础> FileManager> setAttributes实例方法应该解决我的问题。 实例方法----- setAttributes(:ofItemAtPath :) 声明--- f ** c setAttributes( attributes:[FileAttributeKey:Any],ofItemAtPath path:String)throws
我无法编写这行代码以便编译。
var isChangedBoolean = try fm.setAttributes(myAttributesDictionary: [FileAttributeKey : creationDate],ofItemAtPath : myPath)
##############我的代码
let fm = FileManager()
let myPath = "/Users/jon/a-1.jpg" //original date 30/1/2013 = d/m/y
//Convert date string to date object
let myDateString = "24/11/2014" // required date
let dateFmt = DateFormatter()
//dateFmt.timeZone = NSTimeZone.default
dateFmt.dateFormat = "dd/MM/yyyy"
let myDateObject = dateFmt.date(from : myDateString)
print("myDateString :\(myDateString) myDateObj :\(myDateObject!)")
//declare Mutable Dictionary with key : creationDate and my value
var myAttributesDictionary = [FileAttributeKey : Date]()
myAttributesDictionary[FileAttributeKey.creationDate] = myDateObject
print("----------------- mtAttributesDictionary")
print(myAttributesDictionary)
print(myAttributesDictionary[FileAttributeKey.creationDate]!) // works
print("### Will print myAttributesDictionary and a value for the key") // works
do
{
let fileAttributes = try fm.attributesOfItem(atPath : myPath) //works
//print(fileAttributes)
print("### Will print File Attributes")
}
catch let error as NSError
{ print("ERROR READ Attributes: \(error)") }
do
{
print("### Will print my creationDateObject :: \(myAttributesDictionary[FileAttributeKey.creationDate]!)")
// This line is my problem. I cannot write a line of code that will compile
// var isChangedBoolean = try fm.setAttributes(myAttributesDictionary: [FileAttributeKey : creationDate],ofItemAtPath : myPath)
}
catch let error as NSError
{ print("ERROR ERROR in setAttributes: \(error)") }
}
输出----- myDateString:24/11/2014 myDateObj:2014-11-23 13:00:00 +0000 myAttributesDictionary [__C.FileAttributeKey(_rawValue:NSFileCreationDate):2014-11-23 13:00:00 +0000] 2014-11-23 13:00:00 +0000 ###将打印myAttributesDictionary和键的值 ###将打印文件属性 ###将打印我的creationDateObject :: 2014-11-23 13:00:00 +0000
如果问题代码行未注释,则无法编译。我已经写了至少50次并且有许多不同类型的编译器错误。我只是不明白API需要什么,我找不到一个有效的例子。 任何建议将不胜感激。一个解决方案将更加受到重视。 谢谢。
答案 0 :(得分:0)
我是不是觉得这很复杂。
let mypath = "/path/to/file"
let myDateObject = NSDate() // NSDate() is todays date
let attributes = [FileAttributeKey.creationDate: myDateObject]
do {
try FileManager.default.setAttributes(attributes, ofItemAtPath: myPath)
}
catch
{
print(error)
}