programing

iOS: 코드의 app-info.plist 변수에 액세스합니다.

elecom 2023. 6. 7. 22:08
반응형

iOS: 코드의 app-info.plist 변수에 액세스합니다.

유니버설 앱을 개발 중이며 코드의 app-info.plist 파일에 저장된 값에 액세스하고 싶습니다.

이유: 다음을 사용하여 스토리보드에서 동적으로 UIViewController를 인스턴스화합니다.

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

자, 위의 스토리보드 이름 @"MainStoryboard_iPhone"은 보기 흉합니다.

다음과 같은 작업을 수행하고 싶습니다.

UIStoryboard* storyboard = [UIStoryboard storyboardWithName:appInfo.mainStoryboardBaseNamePhone bundle:nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ExampleViewController"];

여기서 appInfo는 app-info.plist의 모든 값의 NSDictionary일 수 있습니다.

다음을 통해 프로젝트의 info.plist 속성에 직접 액세스할 수 있습니다.

[[NSBundle mainBundle] objectForInfoDictionaryKey:key_name];

예를 들어 버전 번호를 얻기 위해 다음을 수행할 수 있습니다.

NSString *appVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

이제 버전 번호가 info.plist에 두 가지 속성을 가지고 있다는 단서가 있습니다. 하지만 아시겠어요?info.plist를 소스 코드로 보면(info.plist를 마우스 오른쪽 버튼으로 클릭 - Open As 선택) 사용할 수 있는 다양한 키 이름을 모두 볼 수 있습니다.

다모 솔루션을 위한 Swift 4+ 구문

Bundle.main.object(forInfoDictionaryKey: "KEY_NAME")

let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion")

info.plist에 매우 쉽게 액세스할 수 있습니다.

스토리보드 이름 가져오기:

NSString *storyboard  = [[NSBundle mainBundle].infoDictionary objectForKey:@"UIMainStoryboardFile"];

그것이 아이패드에 있는지 감지할지 확실하지 않고 그것은 사용해야 합니다.UIMainStoryboardFile~ipad키가 장착된

NSString *path = [[NSBundle mainBundle] pathForResource: @"YOURPLISTNAME" ofType: @"plist"]; 
NSMutableDictionary *dictplist =[[NSMutableDictionary alloc] initWithContentsOfFile:path];

NSBundle에서 infoDictionary 메서드를 사용할 수도 있습니다.

NSDictionary *infoPlistDict = [[NSBundle mainBundle] infoDictionary];
NSString *version = infoPlistDict[@"CFBundleVersion"];

언급URL : https://stackoverflow.com/questions/9530075/ios-access-app-info-plist-variables-in-code

반응형