swift - ubuntu中遇到NSMutableDictionary错误
伊谢尔伦
伊谢尔伦 2017-04-24 09:11:33
0
1
611

我尝试在linux(ubuntu16.04,swift-3.0.1-release,clang-3.8.0)中运行swift代码如下:

import Foundation

let a = NSMutableDictionary()

a.setObject("value",forKey:"key" as NSCopying)

在a中写入一个键值对,但是遇到了一个编译错误:

error: repl.swift:4:30: error: cannot convert value of type 'NSCopying' to expected argument type 'AnyHashable'
a.setObject("a",forKey:"xxx" as! NSCopying)
                       ~~~~~~^~~~~~~~~~~~~
                                           as! AnyHashable

当我将as NSCopying去掉或换成AnyHashable时编译通过,运行又报错了:

Could not cast value of type 'Swift.AnyHashable' (0x7ffff7dcc508) to 'Foundation.NSObject' (0x7ffff46874a0).
Execution interrupted. Enter code to recover and continue.
Enter LLDB commands to investigate (type :help for assistance.)

。。。。请问大神这是什么原因呢?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
阿神

個人的な理解:

  1. Swift で辞書を直接使用せず、NSMutableDictionary を使用してみてはいかがでしょうか

  2. oc のクラスを使用する場合は、キーに対して NSCopying プロトコルを実装する必要があります。つまり、Swift String 型は使用できず、NSString を使用します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート