我正在创建一个Web API来从服务器获取数据并使用AlamoFire和SwiftyJSON。
为什么错误出现“无法推断i的类型”'在自己的类型中使用的'地址'ii)使用未解析的标识符'userAddress(addressJSON :)'“请帮我解决这个错误?
import Foundation
import 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
}
}
首先,结构和类名应该以大写字母开头
您的代码暗示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中,JSONDecoder
比SwiftyJSON
方便得多