我是iOS和Swift开发环境的新手。我试图使用Alamofire来拉取JSON,并使用AlamofireObjectMapper将检索到的JSON集合Map回我的Swift对象。
问题是我可以通过Alamofire请求获取JSON,并且显示了计数,但是Map部分似乎显示为零。这是我遗漏的东西。感谢帮助。
模型类别
import UIKit
import CoreLocation
import ObjectMapper
class BranchObjectMapper : Mappable {
// MARK: Properties
var id: Int?
var cityId: Int?
var areaId: Int?
var name: String?
var nameAr: String?
var branchAddr: String?
var branchAddr2: String?
var location: CLLocation?
required init?(_ map: Map) {
mapping(map)
}
func mapping(map: Map) {
id <- map["id"]
cityId <- map["cityId"]
areaId <- map["areaId"]
name <- map["name"]
nameAr <- map["nameAr"]
branchAddr <- map["branchAddr"]
branchAddr2 <- map["branchAddr2"]
location <- map["location"]
}
}
请求viewDidLoad()
中的零件
Alamofire.request(.GET, UrlEndpoints.branchUrl()).responseArray { (response: Response<[BranchObjectMapper], NSError>) in
self.branchList = response.result.value!
print(self.branchList.count) // count is correct
for branch in self.branchList {
print(branch.id) // prints nil
print(branch.id) // prints nil
}
}
先谢谢你
完整的JSON响应如下所示。在模型中只构建了需要的响应。
[{“编号”:“16”,“区域编号”:“17”,“名称”:“阿尔阿齐克”,“城市编号”:4”,“邮政编码”:“",“名称”:“,”分支地址“:“测试”,“分支地址2”:“测试“纬度”:“24.60425”,“经度”:“46.629631”,“城市编号”:“1”}]
2条答案
按热度按时间wwtsj6pe1#
我认为你缺少了ObjectMapper库的正确文档。检查这个Github ObjectMapper。
以下是lib支持的类型:
Bool
Bool
个Double
Float
String
RawRepresentable
(枚举)Array<AnyObject>
Dictionary<String, AnyObject>
Object<T: Mappable>
Array<T: Mappable>
Array<Array<T: Mappable>>
个Set<T: Mappable>
个Dictionary<String, T: Mappable>
Dictionary<String, Array<T:Mappable>>
个因此,如果您尝试Map不在该列表中的Object,则结果为
nil
。在您的情况下是
var location: CLLocation?
。如果需要MapCLLocation对象,一种方法是使用所有属性MapCustomCLLocation,如下所示:JSON(我不知道你的JSON,这是一个例子)
Swift:创建另一个文件“CustomCLLocation”,例如,与第一个文件类似,但用于将CLLocation与您的Json进行Map
现在,您可以Map一个“假”CLLocation对象:可变位置:是否自定义CL位置?
然后,如果您想要一个真正的CLLocation.,只需创建一个简单扩展(将其添加到CustomCLLocation文件中):
使用转换:
已编辑:Alamofire请求
我在我的应用程序上有相同的要求与最新版本的AlamofireObjectMapper为ios 8.0 +
bq8i3lrv2#
如果你在MapString和Int变量时遇到问题,那是因为你忘了在
var
之前加上dynamic
。示例:
dynamic var id : Int?