我想创建一个需要大量天气预报数据,每小时预报三个城市,七天,二十四小时和六个值的应用程序。
我正在使用Dark Sky API和称为ForecastIO的pod。
我应该使用什么存储? CoreData还是Realm?有人告诉我,Realm易于使用,效率也更高。我研究了代码,对于初学者来说,它要容易得多,并且不处理任何图形也很重要,但是如果需要完成,我将进行研究。我应该如何构造它?
我尝试了此操作,但是Realm仅接受基本数据类型,因此它将不起作用。
HourlyWeather.swift
import Foundation
import RealmSwift
class HourlyWeather: Object {
@objc dynamic var temperature: Double = 0
@objc dynamic var wind: Double = 0
@objc dynamic var precip: Double = 0
@objc dynamic var humidity: Double = 0
@objc dynamic var uvIndex: Int = 0
@objc dynamic var icon: String = ""
}
DailyWeather.swift
import Foundation
import RealmSwift
class DailyWeather: Object {
@objc dynamic var day = [HourlyWeather()] // I understand that this is a no-no for Realm
}
CityWeather.swift
import Foundation
import RealmSwift
class CityWeather: Object {
@objc dynamic var city = [DailyWeather()] // The same
}
我希望此代码可以通过
进行访问City.day[index].hour[index].temperature
例如
答案 0 :(得分:1)
要将Realm对象的集合存储为另一个对象的属性时,需要使用List
而不是Array
。有关更多信息,请阅读官方文档的Many-to-many relationships部分(但我建议您仔细阅读整个文档,因为它为使用Realm提供了一个很好的起点)。
class DailyWeather: Object {
let day = List<HourlyWeather>()
}
class CityWeather: Object {
let city = List<DailyWeather>()
}
答案 1 :(得分:0)
您需要声明List
类型的属性。参见Many to Many docs
class DailyWeather: Object {
let city = List<DailyWeather>()
}