私は素早く新しいです。私はJSONからデータをダウンロードして保存するためにいくつかのライブラリを使いたいと思います。これを行うにはObjectMapper
Realm
とAlamofire
を使用しています。私はAlamofire
とObjectMapper
でデータをダウンロードできますが、私がRealm
を使い始めたときにすべてが間違っていました。問題は、モデルでArrayを使用したときにうまくいきましたが、Realmを使用し始めた後、ArrayではなくListを使用する必要がありました。ここでObjectMapperとRealmを使用してJSONからデータをダウンロード
は私のモデルである:
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です:
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!)
}
}
}
}
私は「アレイ」を使用する場合の違いはループがある「のために」、です実行中でJSONのデータを見ることができますが、 "List"を使用するとコードはループに入ることさえありません。
ありがとうございます。 'ignoredProperties()'メソッドをどこで使う必要があるのか教えてください。それはリストと一緒に戻ってくるはずですか? –
とにかく私はこのメッセージを受け取りました: 'すべてのプロパティはプリミティブ、NSString、NSDate、NSData、NSNumber、RLMArray、RLMLinkingObjects、またはRLMObjectのサブクラスでなければなりません。 ' –
ignoredProperties関数を書いていましたか?これはRealmにDBに格納されないプロパティを通知する関数です。 – kerry