Тип «Int32» не соответствует протоколу «AnyObject» Swift?

У меня есть модель, подкласс 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 и сделал из него JSON с помощью NSJSONSerialization.

Мой код

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.

Изображение ниже

введите здесь описание изображения

Спасибо


person Sam Shaikh    schedule 18.11.2014    source источник


Ответы (1)


Int32 нельзя автоматически связать с Objective-C NSNumber.

См. этот документ< /а>:

Все следующие типы автоматически подключаются к NSNumber:

  • Интерн.
  • UInt
  • Плавать
  • Двойной
  • Буль

Итак, вы должны сделать так:

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

Кстати, почему вы используете Int32? Если у вас нет конкретной причины, вы должны использовать Int.

person rintaro    schedule 18.11.2014
comment
Я использую, поскольку моя база данных имеет тот же тип данных, то есть Int32 и Int16 и т. д. - person Sam Shaikh; 18.11.2014
comment
Также можно использовать: ... = (json["CategoriesVer"] as! NSNumber).intValue (или любой другой метод доступа NSNumber). - person ɲeuroburɳ; 22.08.2015