将 [NSFileWrapper initDirectoryWithFileWrappers] 转换为 Swift

Convert [NSFileWrapper initDirectoryWithFileWrappers] to Swift

我有以下 Objective-C 代码:

NSFileWrapper* fileWrapper;
NSMutableDictionary* wrappers = [NSMutableDictionary dictionary];
...
fileWrapper = [[NSFileWrapper alloc]
                   initDirectoryWithFileWrappers:wrappers];

我试图将上面的代码转换为 Swift:

var fileWrapper : NSFileWrapper?
let wrappers = NSMutableDictionary(dictionary: [:])
....
fileWrapper = NSFileWrapper(directoryWithFileWrappers: wrappers)

最后一行无法编译。我收到错误消息

Cannot convert value type of 'NSMutableDictionary' to expected argument type '[String : NSFileWrapper]'

我不确定 [String : NSFileWrapper] 列表的类型是什么?有没有办法将包装器转换成这种类型?

NSFileWrapper 初始化程序已更改为接受 Swift 字典而不是 NSDictionary:

public class NSFileWrapper : NSObject, NSCoding {

    // ....

    public init(directoryWithFileWrappers childrenByPreferredName: [String : NSFileWrapper])

    // ....
}

[String : NSFileWrapper] 是字典的 Swift 语法,其中 String 是键的类型,NSFileWrapper 是该键的值的类型。

只需使用 Swift 类型:

Swift 3:

FileWrapper(directoryWithFileWrappers: [:])

Swift 2.x:

var fileWrapper : NSFileWrapper?
let wrappers: [String : NSFileWrapper] = [:]
fileWrapper = NSFileWrapper(directoryWithFileWrappers: wrappers)