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]' に変換できません

[String : NSFileWrapper]リストのタイプが何であるかわかりませんか?ラッパーをこのタイプに変換する方法はありますか?

4

1 に答える 1

4

イニシャライザは、以下NSFileWrapperではなく Swift 辞書を受け取るように変更されました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 に答える