CFPrefsPlistSource iOS 10에서 값을 읽지 못했습니다.
오늘 Xcode 8을 베타 2로 업데이트했으며 App과 Today Extension간에 데이터를 공유하려고합니다. 이 로그 경고에 직면했습니다.
2016-07-08 18 : 00 : 24.732472 ProjetctX [941 : 42801] [사용자 기본값] CFPrefsPlistSource <0x1700f1280>의 값을 읽지 못했습니다 (도메인 : group.xpto, 사용자 : kCFPreferencesAnyUser, ByHost : 예, 컨테이너 : (null)). : 컨테이너와 함께 kCFPreferencesAnyUser를 사용하는 것은 cfprefsd에서 분리 된 시스템 컨테이너에만 허용됩니다.
누구든지 나를 도울 수 있습니까?
이것은 실제로 iOS 10 및 macOS 10.12에 도입 된 가짜 경고입니다. (출처 : https://twitter.com/Catfish_Man/status/784460565972332544 )
팀 ID를 추가하라는 조언은 경고를 무음으로 만들지 만 비어있는 새 사용자 기본값도 생성합니다. 이로 인해 이전에 저장된 데이터를 읽을 수 없게됩니다.
당분간 해결책은 그냥 무시하는 것입니다.
또한 포럼의 Apple 직원 CFM :
개인 기능을 사용하지 않고는 불가능하다고 생각되는 매우 구체적인 작업을 수행하지 않는 한 로깅 된 메시지는 가짜입니다 (해당 기능의 오용을 포착하기 위해 추가되었지만 안타깝게도 일반적인 사용 사례도 포착했습니다).
앱 그룹과 함께 NSUserDefaults를 사용하여 기본 앱과 확장간에 데이터를 전달하는 방법은 다음과 같습니다.
기본 앱의 프로젝트 네비게이터에서 프로젝트를 선택하십시오.
기본 앱 대상을 선택하고 기능 탭을 선택합니다.
앱 그룹 스위치를 ON으로 전환합니다. 이는 인 타이틀먼트 세트를 생성하기 위해 개발자 포털과 통신합니다.
새 컨테이너를 만듭니다. Apple에 따르면 컨테이너 ID는 "group"으로 시작해야하므로 "group.io.intrepid.myapp"과 같은 이름이 완벽합니다.
확장 대상을 선택하고 앱 그룹 활성화 프로세스를 반복합니다. 새 앱 그룹을 만들지 말고 기본 앱 대상에서 방금 만든 그룹을 선택하기 만하면됩니다.
앱이나 확장 프로그램에서 NSUserDefaults를 읽거나 쓸 때 NSUserDefaults.standardUserDefaults ()에 액세스하지 마십시오. 대신 NSUserDefaults (suiteName : "group.io.intrepid.myapp")를 사용하십시오. 참고 : 제품군 이름은 4 단계에서 생성 된 앱 그룹 컨테이너의 이름입니다.
그룹 활성화 및 확장 및 앱 기능 섹션 모두에 대해 동일한 그룹 ID를 사용하는지 확인하십시오!
크레딧은 http://blog.intrepid.io/ios-app-extensions 로 이동합니다.
initWithSuiteName을 사용하려고 할 때 이와 동일한 문제가 발생합니다. 이것은 Apple의 버그 인 것 같습니다. 내가 찾은 유일한 해결책 / 해결 방법은 장치의 모든 설정을 재설정하는 것입니다. 로 이동 설정 -> 일반 -> 재설정 -> 모든 설정 재설정.
이것은 iPhone의 콘텐츠를 지우지 않고 모든 설정을 지 웁니다. 설정을 재설정하면 모든 것이 정상적으로 작동했습니다. 도움이된다면 알려주세요.
내 macOS 앱에서도 동일한 문제가 발생했습니다.
해결 방법 : 장치를 재부팅하십시오!
https://stackoverflow.com/a/39876271
SuiteName (접미사)은 기본 번들 ID가 아니어야합니다.
Xcode 8.1 베타로 빌드하면 동일한 경고가 표시되지만 값도 표시됩니다.
를 사용하여 확장 APP에 데이터를 저장하려고 할 때이 문제가 발생하면 userDefault
다음 코드를 작성했을 수 있습니다.
[[NSUserDefaults standardUserDefaults] initWithSuiteName:@"group.xxx.com"];
이 코드는 기본값을 재설정 userDefault
합니다.
실제로 올바른 코드는 다음과 같습니다.
[[NSUserDefaults alloc] initWithSuiteName:@"group.xxx.com"];
http://www.jianshu.com/p/e782104c3bc3
변경
[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xxx.xxx"];
...에
[[NSUserDefaults alloc] initWithSuiteName:@"nnnnnnnnnn.group.com.xxx.xxx"];
nnnnnnnnn
코드 서명에 사용하는 팀 번호는 어디에 있습니까 ?
Xcode 8 GM 및 iOS 10 GM에서 테스트하고 작동했습니다!
참고 URL : https://stackoverflow.com/questions/38275395/failed-to-read-values-in-cfprefsplistsource-ios-10
'IT TIP' 카테고리의 다른 글
ExecutorService에서 shutdown ()을 호출하는 이유 (0) | 2020.11.05 |
---|---|
새로운 netstandardapp과 netcoreapp TFM의 차이점은 무엇입니까? (0) | 2020.11.05 |
C #에서 이름이있는 값 튜플에 별칭을 정의 할 수 있습니까? (0) | 2020.11.05 |
Android를 통해 Google 계정 ID / 사용자 이름에 액세스 (0) | 2020.11.05 |
mongodb에서 데이터 중복이 너무 많습니까? (0) | 2020.11.05 |