2

我有以下 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)

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

无法将“NSMutableDictionary”的值类型转换为预期的参数类型“[String:NSFileWrapper]”

我不确定什么是 type of [String : NSFileWrapper],一个列表?无论如何将包装器转换为这种类型?

4

1 回答 1

4

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

public class NSFileWrapper : NSObject, NSCoding {

    // ....

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

    // ....
}

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

只需使用 Swift 类型:

斯威夫特 3:

FileWrapper(directoryWithFileWrappers: [:])

斯威夫特 2.x:

var fileWrapper : NSFileWrapper?
let wrappers: [String : NSFileWrapper] = [:]
fileWrapper = NSFileWrapper(directoryWithFileWrappers: wrappers)
于 2016-04-01T04:04:37.473 回答