无法推断出类型

时间:2018-01-03 08:30:37

标签: ios swift rest alamofire swifty-json

我正在创建一个Web API来从服务器获取数据并使用AlamoFire和SwiftyJSON。 出现错误的原因"无法推断类型 i)'地址'在自己的类型中使用 ii)使用未解析的标识符&userAddress(addressJSON :)' " 请帮我解决这个错误怎么办? 进口基金会 导入SwiftyJSON class user {     var name = String()     var uname = String()     var email = String()     var phone = String()     var address = userAddress?()     var company = userCompany?()     init(userJSON:JSON){         self.name = userJSON [" name"]。stringValue         self.uname = userJSON [" username"]。stringValue         self.phone = userJSON [" phone"]。stringValue         self.email = userJSON [" email"]。stringValue         self.address = userAddress(addressJSON:userJSON [" address"])         self.company = userCompany(companyJSON:userJSON [" company"])     } } class userAddress {     var street = String()     var city = String()     init(addressJSON:JSON){         self.street = addressJSON [" street"]。stringValue         self.city = addressJSON [" city"]。stringValue     } } class userCompany {     var companyName = String()     var phrase = String()     init(companyJSON:JSON){         self.companyName = companyJSON [" name"]。stringValue         self.phrase = companyJSON [" catchPhrase"]。stringValue     } }

1 个答案:

答案 0 :(得分:2)

首先,结构和类名应以大写字母

开头

您的代码暗示JSON提供所有值,因此没有可选项。

如果有初始化程序,使用默认值声明属性是非常糟糕的习惯。声明var name : String完全没问题。

class User {

    var name : String
    var uname : String
    var email : String
    var phone : String
    var address : UserAddress
    var company : UserCompany

    init(userJSON : JSON) {
        self.name = userJSON["name"].stringValue
        self.uname = userJSON["username"].stringValue
        self.phone = userJSON["phone"].stringValue
        self.email = userJSON["email"].stringValue

        self.address = UserAddress(addressJSON:userJSON["address"])
        self.company = UserCompany(companyJSON:userJSON["company"])
    }

}

class UserAddress { ...

class UserCompany { ...

注意:

在Swift 4中JSONDecoderSwiftyJSON

更方便