【发布时间】:2017-03-13 11:47:32
【问题描述】:
我是 swift 新手,我想使用一些库来从 JSON 下载和存储数据。我正在使用 ObjectMapper Realm 和 Alamofire 来执行此操作。我可以使用Alamofire 和ObjectMapper 下载数据,但是当我开始使用Realm 时,一切都出错了。问题是当我在模型中使用 Array 时效果很好,但是在我开始使用 Realm 后,我不得不使用 List 而不是 Array。
这是我的模型:
class ServiceItem: Object, Mappable {
dynamic var item: [Item]?
//var item = List<Item>()
required convenience init?(map: Map) {
self.init()
}
func mapping(map: Map) {
item <- map["Item"]
}
}
class Item: Object, Mappable {
dynamic var id: String?
dynamic var parentId: String?
dynamic var userName: String?
dynamic var userAddress: String?
dynamic var userMegye: String?
dynamic var userUtca: String?
dynamic var userIrsz: String?
dynamic var userKontakt: String?
dynamic var userEmail: String?
dynamic var userPhone: String?
dynamic var userMobile: String?
dynamic var userWeb: String?
dynamic var userDesc: String?
dynamic var userImage: String?
dynamic var gpslat: String?
dynamic var gpslong: String?
required convenience init?(map: Map) {
self.init()
}
// Mappable
func mapping(map: Map) {
id <- map["id"]
parentId <- map["parent_id"]
userName <- map["user_name"]
userAddress <- map["user_address"]
userMegye <- map["user_megye"]
userUtca <- map["user_utca"]
userIrsz <- map["user_irsz"]
userEmail <- map["user_email"]
userPhone <- map["user_phone"]
userMobile <- map["user_mobile"]
userWeb <- map["user_web"]
userDesc <- map["user_desc"]
userImage <- map["user_image"]
gpslat <- map["gpslat"]
gpslong <- map["gpslong"]
userKontakt <- (map["user_kontakt"])
}
}
这是我下载和存储数据的函数:
func downLoadDataFromJSON() {
let URL = "...."
let item = Item()
Alamofire.request(URL).responseObject { (response: DataResponse<ServiceItem>) in
let serviceResponse = response.result.value
let realm = try! Realm()
if let allServices = serviceResponse?.item{
for items in allServices {
print(items.id!)
print(items.userName!)
}
}
}
}
不同之处在于,当我使用“Array”时,“for”循环正在运行,我可以从 JSON 中看到我的数据,但如果我使用“List”,代码甚至不会进入循环。
【问题讨论】: