2017-02-23 3 views
-1

Swift3에 매우 이상한 문제가 있습니다. 마지막 세션에서 이미 인증 한 사용자를 응용 프로그램에 계속 로그인시키고 싶습니다.UserDefault가 다른 값을 반환합니다.

내 문제는 UserDefaults가 가끔 true로 돌아가고, 가끔 계정에 로그인되어 있어도 false 인 경우입니다. 문제는 나를 미치게 만든다. bool 값을 UserDefaults에 저장하면 특정 문자열을 저장하려고했지만 문제가 지속됩니다.

누구든지이 문제가 있습니까? 어떤 해결책? 내가 로그인 할 때 다음

코드입니다 :

UserDefaults.standard.set(true, forKey: LOGIN) 

그리고 이것은 didFinishLaunchingWithOptions 방법 AppDelegate 내 코드입니다 : 내가 UserDefaults 값을 설정 한 후 UserDefaults.standard.synchronize()를 호출 제안

if UserDefaults.standard.bool(forKey: LOGIN) { 
    AppData().updateUserInformation() 
} 

답변

1

. 많은 개발자가이 작업을 수행 할 필요가 없으며 iOS가이를 처리 할 것이라고 말합니다.

그러나 항상 그런 것은 아니며, 특히 값을 설정 한 직후에 값을 읽을 때나 앱이 동기화되기 전에 앱이 종료되어 손실되는 경우에 특히 그렇습니다.

+1

UserDefaults는 경우에 따라 plist에 백업 된 메모리 내 사전입니다. 사용자 기본값에서 설정된 값을 동기화 여부와 상관없이 즉시 다시 읽을 수있는 방법은 없습니다. 자세한 내용은 http://stackoverflow.com/a/40809748/1226963을 참조하십시오. – rmaddy

+0

내가 말하는 것은 실용적인 경험이 그렇지 않다는 것입니다. 다른 스레드에서 UserDefaults.standard에 액세스하면 상황이 악화됩니다. – picciano