Не совсем уверен, что сопоставление с RegEx - лучший способ считывания чисел из строки, но вот фрагмент кода, который работает:
NSString *str = @"12'34\"";
NSString *minutePattern = @"[[:digit:]]+'";
NSString *secondPattern = @"[[:digit:]]+\"?";
NSRange minuteRange = [str rangeOfString: minutePattern options: NSRegularExpressionSearch];
NSRange secondStartRange;
NSString *minuteString = @"";
if ( minuteRange.location != NSNotFound)
{
minuteString = [str substringWithRange: minuteRange];
NSUInteger secondStartPt = NSMaxRange(minuteRange);
secondStartRange = NSMakeRange(secondStartPt, str.length - secondStartPt);
}
else {
secondStartRange = NSMakeRange(0, str.length);
}
NSRange secondRange = [str rangeOfString: secondPattern
options: NSRegularExpressionSearch
range: secondStartRange];
NSString *secondString = @"";
if ( secondRange.location != NSNotFound)
{
secondString = [str substringWithRange: secondRange];
}
NSInteger minutes = [minuteString integerValue];
NSInteger seconds = [secondString integerValue];
NSLog(@"Minutes: %d, seconds: %d", minutes, seconds);
Обратите внимание, что он будет анализировать строку типа 5'21
как 5 минут 21 секунду, не уверен, что это именно то, что вам нужно, но это можно исправить с помощью дополнительного теста.