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

我尝试在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伐。

répondre à tous(1)
阿神

Compréhension personnelle :

  1. Pourquoi ne pas utiliser directement le dictionnaire dans Swift, mais utiliser NSMutableDictionary

  2. Si vous utilisez les classes en oc, alors le protocole NSCopying doit être implémenté pour la clé, c'est-à-dire que vous ne pouvez pas utiliser le type Swift String mais utiliser NSString

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal