이유를 묻기 전에 : CFBundleVersion
의 응용 프로그램을보고있는 &의 확장 프로그램을 작성한 다음 확장 프로그램이 지원하지 않는 이전 버전과 비교합니다.CFBundleVersion을 NSNumber로 변환하고 비교해보십시오.
다음은 비교 대상입니다.
CFStringRef _version = CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"],
NULL,
(CFStringRef)@" !*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
NSString *versionString = (NSString *)CFBridgingRelease(_version);
NSNumberFormatter * nsFormatter = [[NSNumberFormatter alloc] init];
[nsFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * installedVersion = [nsFormatter numberFromString:versionString];
NSNumber * incompatibleVersion = [nsFormatter numberFromString:@"6.1.0"];
if (installedVersion <= incompatibleVersion) {
NSLog(@"This was triggered");
}
코드는 두 개의 소수가있을 때만 훌륭하게 작동합니다. 예를 들어 CFBundleVersion
을 6.0
또는 5.0
으로 설정하면 코드가 실행되지 않습니다. 비교할 수있는 더 좋은 방법이 있습니까? 왜 생각하고 있는지 이해할 수 없다. 은 6.1.0
제안보다 큽니까?
감사합니다. 검색했지만 아무 것도 생각 나지 않았습니다. – CokePokes