Swift错误:无法将'NSTaggedPointerString'(0x1a1264378)类型的值转换为'NSNumber'(0x1a126f900)

时间:2016-07-06 18:37:03

标签: ios swift

我在Xcode(swift)中遇到此错误:

  

无法将“NSTaggedPointerString”类型的值(0x1a1264378)转换为“NSNumber”(0x1a126f900)。

我明确了错误的位置//错误:(“...”)

代码:

std::shared_ptr

1 个答案:

答案 0 :(得分:1)

您正在将String保存到NSUserDefaults,然后您正在阅读NSNumber。这是不可能的,这就是错误信息所说的内容。

NSUserDefaults具有处理整数的专用方法

集:

  • Swift 1和2:

    defaults.setInteger(2, forKey: "GetMute")
    
  • Swift 3:

    defaults.set(2, forKey: "GetMute")
    

    defaults.synchronize()通常不需要。

得到:

  • Swift 1和2:

    welkmute = defaults.integerForKey("GetMute") 
    
  • Swift 3:

    welkmute = defaults.integer(forKey:"GetMute") 
    

两个注释:

  • 切勿在{{1​​}}中使用valueForKey作为对象。它是NSUserDefaults
  • 尽可能使用Swift原生类型(objectForKey而不是Int)。