Хранение данных прогноза погоды в Swift - PullRequest
0 голосов
/ 17 июня 2019

Я хочу подать заявку, которая требует большого количества данных прогноза погоды, трех городов, семи дней, 24 часов и шести значений в каждый час прогноза.

Я использую Dark Sky API и модуль под названием ForecastIO.

Что я должен использовать для хранения? 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 

например

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вам нужно использовать List вместо Array, если вы хотите сохранить коллекцию объектов Realm как свойство другого объекта.Для получения дополнительной информации прочитайте часть «многие ко многим» часть официальных документов (но я бы посоветовал просмотреть всю документацию, поскольку она дает действительно хорошую отправную точку для использования Realm).

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

class CityWeather: Object {
    let city = List<DailyWeather>()
}
0 голосов
/ 18 июня 2019

Вам необходимо объявить свойство типа List.См. Многие ко многим документам

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