2014-11-18 10 views
5

У меня есть модель, подкласс NSObject, выглядит как показано ниже.Тип 'Int32' не соответствует протоколу 'AnyObject' Swift?

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.

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

enter image description here

Благодаря

ответ

13

Int32 не может быть автоматически мостиком из Objective-C NSNumber.

См this document:

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

  • Int
  • UINT
  • Float
  • Double
  • Bool

Таким образом, вы должны сделать так:

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

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

+3

Я использую, поскольку моя база данных имеет тот же тип данных, то есть Int32 и Int16 и т. Д. –

+0

Также можно использовать: '... = (json [" КатегорииVer "] как NSNumber) .intValue' (или любой другой аксессуар NSNumber) , –

Смежные вопросы