var2
тип это string, преобразовать его в int.
var2 = int(var2)
Как вы знаете, '1' == 1
является ложным.
'Вот то, что я делаю для вытаскивания определенных значений из строки
Первый, у меня есть этот метод, определенный
- (NSString *)getDataBetweenFromString:(NSString *)data leftString:(NSString *)leftData rightString:(NSString *)rightData leftOffset:(NSInteger)leftPos;
{
NSInteger left, right;
NSString *foundData;
NSScanner *scanner=[NSScanner scannerWithString:data];
[scanner scanUpToString:leftData intoString: nil];
left = [scanner scanLocation];
[scanner setScanLocation:left + leftPos];
[scanner scanUpToString:rightData intoString: nil];
right = [scanner scanLocation] + 1;
left += leftPos;
foundData = [data substringWithRange: NSMakeRange(left, (right - left) - 1)]; return foundData;
}
Тогда вызов она.
foundData = [self getDataBetweenFromString:data leftString:@"user logged (" rightString:@"attempts)" leftOffset:13];
leftOffset является количеством символов для левой строки
, Мог быть более легкий более чистый путь, но это было моим решением.
NSScanner
- это линейный сканер. Вы должны сканировать то, что вы не хотите, чтобы получить то, что хотите.
Вы можете выполнить [aScanner scanUpToCharactersInSet: [NSCharacterSet decimalDigitCharacterSet] intoString: NULL]
, чтобы пропустить все, что до числовой символ. Затем вы выполняете [aScanner scanInteger: & anInteger]
, чтобы преобразовать символ в целое число.
Решение Ziltoid работает, но здесь больше кода, чем вам нужно.
Я бы не стал создавать экземпляр NSScanner для данной ситуации. NSCharacterSet и NSString предоставляют все, что вам нужно:
NSString *logString = @"user logged (3 attempts)";
NSString *digits = [logString stringByTrimmingCharactersInSet:
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
NSLog(@"Attempts: %i", [digits intValue]);
или в Swift:
let logString = "user logged (3 attempts)"
let nonDigits = NSCharacterSet.decimalDigitCharacterSet().invertedSet
let digits : NSString = logString.stringByTrimmingCharactersInSet(nonDigits)
NSLog("Attempts: %i", digits.intValue)