Свойства объекта в моем контроллере исходного представления задаются до или после функции AppDelegate didFinishLaunchingWithOptions вызывается?Свойство, связанное с пользователями по умолчанию, вызывающее приложение к сбою
Вот код в AppDelegate. Когда мое приложение сначала запускается, если пользовательское значение по умолчанию для «CurrentDateBool» не установлено, оно получает значение true.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if UserDefaults.standard.value(forKey: "currentDateBool") == nil {
UserDefaults.standard.setValue(true, forKey: "currentDateBool")
}
return true
}
Вот мой первоначальный контроллер. Это приводит к сбою моего приложения в свойстве currentDateBool, потому что оно равно нулю. Тем не менее, он не должен быть нулевым, поскольку он устанавливает значение true в AppDelegate. Я думал, что AppDelegate устанавливается перед контроллером начального представления. Может кто-то прояснить порядок, в котором свойства будут установлены?
class TimestampTableViewController: UITableViewController {
var currentDateBool = UserDefaults.standard.value(forKey: "currentDateBool") as! Bool
override func viewDidLoad() {
super.viewDidLoad()
}
...
}
я могу заставить его работать, если я перееду, установив свойство currentDateBool к пользовательскому умолчанию в viewDidLoad.
class TimestampTableViewController: UITableViewController {
var currentDateBool = true
override func viewDidLoad() {
super.viewDidLoad()
currentDateBool = UserDefaults.standard.value(forKey: "currentDateBool") as! Bool
}
...
}
«Я могу заставить его работать, если переместить значение currentDateBool в значение по умолчанию в viewDidLoad». Так сделайте это! – matt
@matt я сделал! ха-ха. Я просто пытаюсь понять, почему он рушится, когда я этого не делаю. Я думал, что AppDelegate вызывается до того, как мои свойства установлены, поэтому я не понимаю, почему он сбой. – chickenparm
Является TimestampTableViewController вашим контроллером корневого представления? Вы используете основную раскадровку? – matt