类型'Int32'不符合协议'AnyObject' Swift?

4

我有一个模型,它是NSObject的子类,如下所示。

class ConfigDao: NSObject {
    var categoriesVer : Int32 = Int32()
    var fireBallIP : String =  String ()
    var fireBallPort : Int32 = Int32()
    var isAppManagerAvailable : Bool = Bool()
    var timePerQuestion : String = String ()
    var isFireballAvailable : Bool = Bool ()
}

我已经下载了NSMutableData并使用NSJSONSerialization将其转换成JSON

我的代码如下:

func parserConfigData (data :NSMutableData) -> ConfigDao{

        var error : NSError?
        var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary

        var configDao : ConfigDao = ConfigDao()

        println("Print Config \(json)")

        configDao.categoriesVer = json["CategoriesVer"] as Int32
        configDao.fireBallIP = json["FireBallIP"] as String
        configDao.fireBallPort = json["FireBallPort"] as Int32
        configDao.isAppManagerAvailable = json["IsAppManagerAvailable"] as Bool
        configDao.timePerQuestion = json["TimePerQuestion"] as String
        configDao.isFireballAvailable = json["IsFireballAvailable"] as Bool

        return configDao

    }

我收到错误信息。
Type '`Int32`' does not conform  to protocol 'AnyObject' 

我曾经使用过Int32

下面是图片。

enter image description here

谢谢。

1个回答

13

Int32 无法从 Objective-C NSNumber 自动桥接。

请参阅 此文档

以下所有类型都会自动桥接到 NSNumber:

  • Int
  • UInt
  • Float
  • Double
  • Bool

因此您需要按照以下方式进行操作:

configDao.categoriesVer = Int32(json["CategoriesVer"] as Int)

顺便问一下,为什么你使用Int32?如果没有特别的原因,应该使用Int


3
我正在使用的数据库具有相同的数据类型,例如Int32和Int16等。 - Sam Shaikh
还可以使用:... = (json["CategoriesVer"] as! NSNumber).intValue(或任何其他NSNumber访问器)。 - ɲeuroburɳ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接