신청서에 SBUsesNetwork
과 UIRequiresPersistentWiFi
키를 사용하고 싶습니다. 그러나 특정보기 컨트롤러 집합을 사용할 때만 사용할 수 있습니다. 응용 프로그램이 실행되는 동안 프로그래밍 방식으로 이러한 키 값을 전환 할 수있는 방법이 있습니까?응용 프로그램이 실행되는 동안 Info.plist 값을 프로그래밍 방식으로 바꿀 수 있습니까?
5
A
답변
6
실행 중에 번들 내용을 수정할 수 없으면 해당 디렉토리에 대한 쓰기 권한이 없습니다. 네가 원하는대로 정확하게 할 수있는 방법이 있는지 모르겠다.
3
나는 다음과 NSBundle 통해있는 NSDictionary로의 Info.plist를 얻을 수 있습니다 알고
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
거기에서 당신은 NSDictionary
의 mutableCopy
을 만들고 그 안에 값을 설정할 수 있습니다. 키를 쿼리 할 때는 NSDictionary
이 아니라 info.plist 파일을 쿼리해야합니다.하지만 두 문제를 모두 처리하는 클래스에이 모든 것을 캡슐화하는 것은 어렵지 않습니다.
앱의 info.plist 파일을 직접 수정하는 경우 문제가있을 수 있습니다 (예 : 파일을 수정하면 코드 서명이 실패하고 앱이 손상된 것으로 간주 됨). 확실하지 않습니다.
0
Info.plist를 수정할 수 없습니다. 당신이 한 일을 애플이 승인 한 방식으로 보이지 않습니다.
0
나는 이것이 효과가 있다고 생각하지 않습니다. [NSBundle mainBundle]에는 특정 infoDictionary에 대한 포인터가 있습니다. 변경할 수있는 사본을 가지고 있더라도 NSBundle은 새로운 plist에 대해 아무 것도 모릅니다. 누구나 아직 해봤습니까?
0
Info.plist는 사전 일뿐입니다. 따라서 편집 할 수 있습니다.
'UIRequiresPersistentWiFi' 키가 네트워크 연결이 필요할 때 WiFi 대화 상자를 표시하는 액세스 방법을 알 수 없거나 모를 수있는 더 큰'UIApplication' 코드에 연결되어있는 것처럼 보입니다. 따라서 번들 환경 설정의 복사본을 만드는 것이이 특정 경우에는 가능하지 않을 수 있습니다. 그러나이 동작이 재정의 될 수있는 경우 다른 키에도 적용될 수 있습니다. –
info.plist 또는 mainbundle에있는 파일을 변경할 수 없습니다. – mahboudz