당신은
"<key>ExpirationDate</key><date>2014-12-06T00:26:10Z</date>" in [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"]
처럼 뭔가를 찾고 그러나 점점 쉽지가 않다! 이 코드는 개선 될 수 있으며, 일부는 다른 스택 오버 플로우 게시를 기반으로합니다. 참고 : 또 다른 옵션은 plist (사전)에 항목 plist 과/plist 사이의 모든 것을로드하는 것입니다. 그러나 우리는 이미 거기에 있기 때문에 형제를 손으로 만 찾습니다.
- (NSString*) getExpiry{
NSString *profilePath = [[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"];
// Check provisioning profile existence
if (profilePath)
{
// Get hex representation
NSData *profileData = [NSData dataWithContentsOfFile:profilePath];
NSString *profileString = [NSString stringWithFormat:@"%@", profileData];
// Remove brackets at beginning and end
profileString = [profileString stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@""];
profileString = [profileString stringByReplacingCharactersInRange:NSMakeRange(profileString.length - 1, 1) withString:@""];
// Remove spaces
profileString = [profileString stringByReplacingOccurrencesOfString:@" " withString:@""];
// Convert hex values to readable characters
NSMutableString *profileText = [NSMutableString new];
for (int i = 0; i < profileString.length; i += 2)
{
NSString *hexChar = [profileString substringWithRange:NSMakeRange(i, 2)];
int value = 0;
sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
[profileText appendFormat:@"%c", (char)value];
}
// Remove whitespaces and new lines characters
NSArray *profileWords = [profileText componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
//There must be a better word to search through this as a structure! Need 'date' sibling to <key>ExpirationDate</key>, or use regex
BOOL sibling = false;
for (NSString* word in profileWords){
if ([word isEqualToString:@"<key>ExpirationDate</key>"]){
NSLog(@"Got to the key, now need the date!");
sibling = true;
}
if (sibling && ([word rangeOfString:@"<date>"].location != NSNotFound)) {
NSLog(@"Found it, you win!");
NSLog(@"Expires: %@",word);
return word;
}
}
}
return @"";
}
첫 번째 줄 자체에 대한 profilePath의 반환 nil. 나는 xcode 8.2.1을 사용하고 있으며이 objective-c 코드를 swift와 함께 사용하고있다. – Skywalker
시뮬레이터에서 코드를 실행하고 있습니까? 서명되지 않았으므로 시뮬레이터에서 실행할 때 embedded.mobileprovision 파일이 없습니다. 실제 장치에서 코드를 실행 해보십시오 (코드가 서명되어 있어야하고 embedded.mobileprovision 파일이 있어야합니다). – wottle