이전에 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];
}
교대 스위프트의 동등한 알고있는 사람, 또는 - 당신은 스위프트에 위의 코드를 변환하는 방법을 나를 통해 걸을 수 : 다음 코드 (원본 게시물에 대한 링크를 참고)을 사용했다.
__
고정 ZAZ 코드. Objective-C 클래스 메소드 (+가 앞에 붙음)는 'func override'키워드 앞에 'class'키워드로 식별되는 Swift Type 메소드입니다. 아래 코드와 함께 appDelegate에 대해 initialize()가 제대로 호출되었음을 확인했습니다.
내 iPhone에 내 앱이 새로로드되고 설정이 시작되면 "xxx 설정"이 누락되었지만 Apple의 "액세스 허용 xxxx"설정이 표시됩니다. 설정에서 뒤로 화살표를 클릭하면 내 앱 설정을 다시 한 번 클릭합니다. 이제 내 앱 설정이 표시되고 후속 실행에 계속 사용할 수 있습니다.
휴대 전화에서 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()'를하지 않을까요을 할 것입니다이 시간을 희망? –