Попытка получить доступ к данным ответа из службы для отображения в виджете TodayExtenstion
import Foundation
struct MarketIndex:Codable {
let indicesName: String
let indicesValue: String
let dateValue : String
let indicesChangeValue : String
let changePercentage : String
let indexVolume: String?
}
struct MarketIndexCache {
static let key = "MARKET_INDEX_KEY"
static func save(_ value: [MarketIndex]!) {
UserDefaults.standard.set(try? PropertyListEncoder().encode(value), forKey: key)
}
static func get() -> [MarketIndex]! {
var marketIndex: [MarketIndex]!
if let data = UserDefaults.standard.value(forKey: key) as? Data {
marketIndex = try? PropertyListDecoder().decode([MarketIndex].self, from: data)
return marketIndex!
} else {
return marketIndex
}
}
static func remove() {
UserDefaults.standard.removeObject(forKey: key)
}
}
MarketIndexClient Фрагмент кода класса вызова службы
marketIndexClient.fetchMarketIndex(symbol: "AAPL,MSFT"){ marketIndex in
self.stockIndex = marketIndex
completion()
MarketIndexCache.save(self.stockIndex)
self.dispatchGroupCalls.leave()
}
При попытке доступа к другому контроллеру представления, способному получить сохраненные данные.
override func viewDidLoad() {
super.viewDidLoad()
marketIndex = MarketIndexCache.get()
}
При попытке получить к нему доступ из TodayWidgetViewController возвращает ноль.
import UIKit
import NotificationCenter
class TodayWidgetViewController
override func viewDidLoad() {
super.viewDidLoad()
marketIndex = MarketIndexCache.get()
print(marketIndex as Any)
}
Разве UserDefaults для двух целей не будут обмениваться данными друг с другом?
Когда я выбираю target projectName, мне нужно настроить TodayExtenstion, так что оба должны синхронизироваться друг с другом, когда мой проект запускается на устройстве.
Я не могу отладить TodayExtenstionWidget при запуске проекта приложения.
Это мое наблюдение обнаружилось при работе с TodayExtenstion.
Я не могу понять, почему он возвращает ноль!Ваши данные действительно помогут мне достичь этого.
СООБЩЕНИЕ ОБ ОШИБКЕ:
Неожиданно найдено nil при развертывании Необязательное значение Неустранимая ошибка: Неожиданно найдено nil при развертывании Необязательное значение