2014-09-13 7 views
10

앱에서 3 가지 언어를 사용해야하는 설정에서 선택할 수 있습니다. 아무 것도 선택하지 않으면 iPhone 언어가 영어, 프랑스어 또는 독일어로 감지되고 선택됩니다. 이 언어들 중 어느 것도 iPhone 언어가 아니면 영어가 사용되도록 설정되어 있습니다. 설정에서 언어를 수동으로 변경하면 정상적으로 작동합니다. 이제는 거의 잘 작동하는 오늘 확장을 추가했지만 수동으로 변경 한 경우 해당 언어에 대한 NSUserDefaults를 얻으려면 해당 설정에 액세스해야합니다. 두 가지 목표에서 나는오늘 확장에서 settings.bundle에 액세스

group.com.companyname.appname 

으로 App-Groups을 활성화하고 그것을 선택했습니다. 응용 프로그램에서

나는

NSString *manualLanguageSet = [[NSUserDefaults standardUserDefaults] valueForKey:SPRACHWAHL]; 

와 언어를 얻고 오늘-확장에 나는하여 얻을려고 : 오늘-확장을 실행할 때 NSLog(@"Settings-Sprache: %@", manualLanguageSet);를 들어

NSString *manualLanguageSet = [[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL]; 

이 결과는 (설정에 어떤 언어가 선택되었는지는 중요하지 않음)

2014-09-13 16 : 48 : 36.331 HdB today [3734 : 284836] 설정 -sprache : (null)

어떻게하면됩니까? 설정 (settings.bundle)에 액세스하려면 어떻게해야합니까?

+0

에서 당신이 해결책을 찾았로? –

+0

아니야.설정을 변경 한 후 확장 프로그램에서 선택한 언어를 사용하려면 앱을 실행해야하며 확장 프로그램에 대한 변경 사항이 저장됩니다. – Christian

답변

2

나는 그것을 찾고 있습니다. 그것을하는 방법을 아는 유일한 방법은 SharedContainer를 통해서입니다. 귀하의 예제에서 당신은 당신의

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] valueForKey:SPRACHWAHL];

컨테이너에서 응용 프로그램을 열어야합니다 다음과 같이 컨테이너 응용 프로그램의 NSUserDefaults에서 언어 값을 복사 :

[[[NSUserDefaults alloc] initWithSuiteName:@"group.com.companyname.appname"] setObject:[NSUserDesaults standardUserDefaults] objectForKey:SPRACHWAHL] forKEY:@"Your Key in extension"]];

하는 것은 다음에 액세스 할 수 있습니다 당신의 귀하의 확장에 공유 컨테이너와 그 값을 얻을.

누군가가 더 좋은 방법을 가지고 있다면 기쁜 마음으로 알게 될 것입니다. 당신이 WatchKit 기본 번들을 작성하는 경우

2

, 또한 값이 NSUserDefaults에 제공하는 것 (그룹 식별자 인으로, 번들의 Root.plist의 사전의 루트 레벨의 키

ApplicationGroupContainerIdentifier 

을 포함 as suiteName).

iOS 설정 번들에서이 키를 사용할 수도 있음을 확인했습니다. 추가하면 환경 설정이 해당 컨테이너로 이동합니다.

iOS 설정 앱, iPhone 앱 및 WatchKit 확장 프로그램에서 iOS 8.3에서 작동하는 것으로 확인되었습니다.

UPDATE : 애플에는이 키 아이폰 OS 8.2에서 지원하고 나중에 https://developer.apple.com/library/ios/documentation/PreferenceSettings/Conceptual/SettingsApplicationSchemaReference/Articles/RootContent.html