앱스토어의 앱에 대한 업데이트를 통해 NSUserDefaults가 유지됩니까?
이것이 사실입니까?앱스토어의 앱에 업데이트를 제출할 때 NSUserDefaults가 재설정됩니까, 아니면 재설정됩니까?
업데이트할 때는 앱이 충돌하지만 완전히 다운로드할 때는 충돌하지 않습니다. 따라서 새로 다운로드한 세션에 대한 업데이트된 세션에서 무엇이 다를 수 있는지 확인하려고 합니다.
건배, 닉
사용자가 앱을 삭제하지 않으면 일반적으로 재설정되지 않습니다.기본 데이터의 경우 기본 설정, 날짜, 문자열 등의 데이터를 저장하는 가장 좋은 방법은 NSUserDefaults입니다.이미지와 파일을 저장하려는 경우 파일 시스템이 더 좋습니다.
저는 답이 "예"라고 믿습니다. 그것은 지속될 것입니다.이 문서는 Apple iPhone OS 프로그래밍 가이드의 Application Directory 장에도 완전히 설명되어 있습니다.
- 게시된 질문에 대한 직접 답변: 예.
- 문제:논리적 문제로 인해 앱이 손상되었습니다.개체를 기본값으로 저장하고 실행 시(또는 다른 곳) 해당 개체의 값을 앱이 확인한다고 가정합니다.업데이트에서 확인 또는 사용 방법을 변경할 수 있습니다. 예를 들어, 값을 예상하지만 개체가 0이거나 그 반대입니다.이로 인해 SIGABRT 또는 EXC_BAD_ACCESS가 발생할 수 있습니다.
CoreData 모델이 있는데 마이그레이션을 관리하지 않고 모델과 업데이트에서 무언가를 변경했다면 업데이트 시 앱이 충돌하는 이유일 수 있습니다.
저도 비슷한 경험이 있습니다.우리 앱은 설정에 버전 번호를 저장합니다.번들/루트.Plist. 이것은 아이폰 설정 앱을 통해 표시됩니다.설치 시 앱 번들에서 버전 번호가 로드되므로 버전 번호가 정확합니다.그러나 업데이트 시 버전 번호는 변경되지 않습니다.이것은 사용자가 이전 버전의 앱을 실행하고 있다는 느낌을 줍니다.버전 번호에 연결된 로직은 없으며, 표시용입니다(고장 진단 시 컨택 센터 직원이 사용할 수 있음).
사용자가 앱을 업데이트할 때 NSUserDefaults가 지워지지 않지만 Settings 디스플레이도 업데이트되지 않습니다.
앱이 백그라운드에서 실행되고 있고 NSUserDefaults에 저장된 값에 액세스할 수 없는 경우에는 다음과 같이 주의하십시오.
에릭:
이것에 대해 많은 스레드와 버그가 있었지만, ios 9에서 다시 발생하고 있습니다.NSURL 세션 작업 및 콘텐츠 사용 가능 푸시에 응답하여 백그라운드에서 실행되는 앱이 있습니다.재현적으로, 휴대폰을 재부팅하고 앱의 백그라운드 실행이 발생하기를 기다린 후 앱을 열면 NSUserDefaults standardUserDefaults] 사전 표현(예: Apple)에 모든 시스템 값이 포함되어 있음을 알게 됩니다.StoreItemKinds 등을 조정하지만 설정한 값이 없습니다.앱을 강제로 종료하고 다시 실행하면 모든 가치가 되돌아옵니다.전화기의 잠금이 해제되기 전에 "빈" 표준 UserDefaults를 캐시하는 것을 피하거나, 최소한 앱을 강제로 종료하지 않고 언제 고장 났는지 확인하고 수정할 수 있는 방법이 있습니까?
에스키모(eskimo1@apple.com ):
여기서 문제는 NSUserDefaults가 궁극적으로 앱의 컨테이너에 있는 파일에 의해 지원되고 앱의 컨테이너는 데이터 보호의 대상이 된다는 것입니다.iOS 7 이상에서 특별한 작업을 수행하지 않으면 컨테이너가 NSFileProtectionCompleteUntilFirstUserAuthentication을 사용합니다. 이 값은 NSUserDefaults 백업 저장소에서 상속되므로 처음 잠금을 해제하기 전에 액세스할 수 없습니다.
IMO를 사용하는 가장 좋은 방법은 백그라운드에서 실행할 수 있는 코드 경로에서 의존하는 항목에 대해 NSUserDefaults를 피하는 것입니다.대신 이러한 설정을 데이터 보호를 명시적으로 관리할 수 있는 기본 설정 파일(이 경우 'NSFileProtectionNone으로 설정')에 저장합니다.
데이터 보호 컨텍스트에서 NSUserDefaults에는 다음 두 가지 문제가 있습니다.
완전히 추상적인 API입니다. 백업 저장소의 존재와 위치는 해당 API의 일부로 간주되지 않으므로 데이터 보호를 명시적으로 관리할 수 없습니다.
참고 최근 버전의 OS X NSUserDefaults는 데몬에 의해 관리되며 백업 저장소를 직접 조작하려는 사용자에게 문제가 발생했습니다.같은 종류의 것이 어느 시점에 iOS에 온다는 것을 쉽게 상상할 수 있습니다.
데이터 보호를 변경할 수 있었다고 해도 NSUserDefaults에는 사용자가 사용하는 컨텍스트를 기준으로 데이터를 분류하는 메커니즘이 없습니다. 이는 '모두 또는 아무것도 아닌' API입니다.사용자의 경우 처음 잠금을 해제하기 전에 백그라운드에서 액세스해야 하는 모든 사용자 기본값에서 보호를 제거하지 않으려는 경우.
마지막으로, 이 데이터 중 하나가 정말로 중요하다면, 당신은 그것을 열쇠고리에 넣어야 합니다.특히, 키 체인에는 항목별로 데이터 보호를 설정할 수 있는 기능이 있습니다.
출처: https://webcache.googleusercontent.com/search?q=cache:sR9eZNHpZtwJ:https ://forums.developer.apple.com/thread/15685
언급URL : https://stackoverflow.com/questions/1638766/do-nsuserdefaults-persist-through-an-update-to-an-app-in-the-appstore
'source' 카테고리의 다른 글
TextView textStyle(예: 굵게, 기울임꼴)을 설정하는 방법 (0) | 2023.06.01 |
---|---|
Mobile Safari(iPhone)에서 텍스트 영역 내부 그림자 제거 (0) | 2023.06.01 |
Postgres - FATAL: 데이터베이스 파일이 서버와 호환되지 않습니다. (0) | 2023.06.01 |
숫자만 입력할 수 있는 텍스트 상자를 만들려면 어떻게 해야 합니까? (0) | 2023.06.01 |
엔티티 프레임워크와 LINQ 간 SQL 비교 (0) | 2023.06.01 |