Раньше в приложении Objective-C мне нужно было синхронизировать настройки приложения iOS при запуске в делете приложения. Это давало правильные предпочтения при запуске. Я использовал следующий код (обратите внимание на ссылку на оригинальное сообщение):Как синхронизировать настройки приложения в Swift?
# https://www.inkling.com/read/learning-ios-programming-alasdair-allan-2nd/chapter-12/application-preferences
+ (void)initialize {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings"
ofType:@"bundle"];
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle
stringByAppendingPathComponent:@"Root.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
[defaults registerDefaults:defaultsToRegister];
[defaults synchronize];
}
ли кто-то осознает эквивалент в Swift, или попеременно - вы можете ходить со мной через, как преобразовать код выше Свифт.
__
Я установил код ЗАЗ. Эквивалентом метода класса Objective-C (которому предшествует +) является метод типа Swift, который идентифицируется с ключевым словом «class», предшествующим ключевым словам «func override». Я подтвердил, что initialize() правильно называется appDelegate с приведенным ниже кодом.
Несмотря на то, что при загрузке моего приложения на iPhone и при запуске настроек отображаются настройки «ALLOW xxx TO ACCESS» Apple, хотя мои «xxx SETTINGS» отсутствуют. Если я нажму на стрелку назад в настройках, а затем снова нажмите настройки моего приложения - настройки моего приложения теперь присутствуют и остаются доступными для последующих запусков.
Я удалил приложение Apple Numbers с моего телефона, а затем перезагрузил и запустил Настройки. Все настройки присутствуют в приложении Numbers при первоначальном запуске. Таким образом, существует некоторая форма начальной загрузки и/или проблема кэширования. Любая помощь по этому поводу будет высоко оценена.
class override func initialize() {
if let settingsBundle = NSBundle.mainBundle().pathForResource("Settings", ofType: "bundle") {
let settings = NSDictionary(contentsOfFile: settingsBundle.stringByAppendingPathComponent("Root.plist"))
let preferences = settings?.objectForKey("PreferenceSpecifiers") as NSArray
let defaultsToRegister = NSMutableDictionary(capacity: preferences.count)
let defaults = NSUserDefaults.standardUserDefaults()
defaults.registerDefaults(defaultsToRegister)
defaults.synchronize()
}
}
бы это не просто 'defaults.synchronize()'? –