macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

[ NSObject : AnyObject]! って何? [Swift]

NSWorkspaceのduplicateURLs:completionHandler:を見ていると

func duplicateURLs(_ URLs: [AnyObject],
 completionHandler completionHandler: (([NSObject : AnyObject]!,
                            NSError!) -> Void)?)

[NSObject : AnyObject] ん?
なにこれ?

とりあえず、ファイル複製はできるようだが[NSObject : AnyObject]これはなんだ?

let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace()
                theWorkspace.duplicateURLs(openPanel.URLs, completionHandler: {
                    ([ NSObject : AnyObject]!, err) in
                    
                })


qiita.com


うーん、とりあえず辞書っぽいなあ。[NSObject : AnyObject]はDictionaryに変換できるらしい。

これで取れるかな

let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace()
                theWorkspace.duplicateURLs(openPanel.URLs, completionHandler: {
                    (dic : [ NSObject : AnyObject]!, err) in
                    NSLog("%@", dic.description)
                })

->[file:///Users/userName/Desktop/%E2%99%A1: file:///Users/userName/Desktop/%E2%99%A1%20copy%205]
複製元のファイルのURLと複製後のファイルのURLか。

複製元のファイルのURLがキーになって、複製後のファイルのURLが値になっているみたいだ。
よくわからんが、一応値はとれた。

let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace()
                theWorkspace.duplicateURLs(openPanel.URLs, completionHandler: {
                    (dic : [ NSObject : AnyObject]!, err) in
                    NSLog("%@", (dic as Dictionary).description)
                    //let values: Array = Array(dic.keys)
                    let values: Array = Array(dic.values)
                    for (index, value) in enumerate(values) {
                        println("index: \(index), value: \(value)")
                    }
                })