在Swift中存储天气预报数据

在Swift中存储天气预报数据,swift,core-data,struct,realm,weather-api,Swift,Core Data,Struct,Realm,Weather Api,我想做一个应用程序,它需要大量的天气预报数据,三个城市,七天,24小时,每小时预报六个值 我正在使用名为ForecastIO的黑暗天空API和pod 我应该用什么来储存?核心数据还是领域?有人告诉我,Realm更容易使用,而且效率也更高。我研究了代码,对于初学者来说,这要容易得多,不处理任何图形也很好,但如果需要,我会研究它。我应该如何构建它 我尝试过这个方法,但Realm只接受基本数据类型,所以它不起作用 斯威夫特 import Foundation import RealmSwift cl

我想做一个应用程序,它需要大量的天气预报数据,三个城市,七天,24小时,每小时预报六个值

我正在使用名为ForecastIO的黑暗天空API和pod

我应该用什么来储存?核心数据还是领域?有人告诉我,Realm更容易使用,而且效率也更高。我研究了代码,对于初学者来说,这要容易得多,不处理任何图形也很好,但如果需要,我会研究它。我应该如何构建它

我尝试过这个方法,但Realm只接受基本数据类型,所以它不起作用

斯威夫特

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 = ""
}
import Foundation
import RealmSwift

class DailyWeather: Object {
    @objc dynamic var day = [HourlyWeather()] // I understand that this is a no-no for Realm
}
import Foundation
import RealmSwift

class CityWeather: Object {
    @objc dynamic var city = [DailyWeather()] // The same
}
每日天气

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 = ""
}
import Foundation
import RealmSwift

class DailyWeather: Object {
    @objc dynamic var day = [HourlyWeather()] // I understand that this is a no-no for Realm
}
import Foundation
import RealmSwift

class CityWeather: Object {
    @objc dynamic var city = [DailyWeather()] // The same
}
城市天气预报

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 = ""
}
import Foundation
import RealmSwift

class DailyWeather: Object {
    @objc dynamic var day = [HourlyWeather()] // I understand that this is a no-no for Realm
}
import Foundation
import RealmSwift

class CityWeather: Object {
    @objc dynamic var city = [DailyWeather()] // The same
}
我希望这个代码可以作为

City.day[index].hour[index].temperature 
例如

当您想要将领域对象的集合存储为另一个对象的属性时,您需要使用列表而不是数组。有关更多信息,请阅读官方文档的一部分,但我建议通读整个文档,因为它为使用领域提供了一个非常好的起点

class DailyWeather: Object {
    let day = List<HourlyWeather>()
}

class CityWeather: Object {
    let city = List<DailyWeather>()
}

您需要声明List类型的属性。见


欢迎来到堆栈溢出!没有必要告诉我们你是新来的或者没有经验,因为我们不在乎。我们关心的是你是否做了研究,尝试了多种方法来解决问题,然后根据指导原则写了一个好问题。请参阅和链接页面,因为它们会有所帮助。一个小的补充是,欢迎您在领域对象中使用数组,但它们不会由领域管理-它们只是常规数组。e、 g.如果您像问题中那样加载DailyWeather对象,day数组将是一个可以手动填充的空数组。正如David所说,如果希望管理对象和关系,请使用列表。如果您想要一个数组,可以释放@objc动态变量,只需将其设置为常规变量即可。