Я пытаюсь извлечь строку (содержащую целое число) из массива, а затем использовать ее как int в функции. Я пытаюсь преобразовать его в int с помощью intValue.
Вот код, который я пробовал.
NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
Я получаю такую ошибку:
передача аргумента 3 'loggedIn :::' делает указатель из целого числа без приведения
В чем дело?
iphone
objective-c
string
int
Кристиан Стюарт
источник
источник
(int)
частьloggedIn:::
, что явно не соответствует Objective-C.loggedIn:::
. Остальная часть этого объявления - это просто имена параметров, а не часть селектора. Идиоматично, должно быть- (void)loggedIn:(NSString *)tusername password:(NSString *)tpassword userID:(int)userId
. И тогда вы бы назвали это как[_appDelegate userIsLoggedIn:usernameField.text password:passwordField.text userID:[[_returnedArguments objectAtIndex:2] intValue]];
.Ответы:
Я действительно не знаю, что было такого сложного в этом вопросе, но мне удалось это сделать так:
[myStringContainingInt intValue];
Следует отметить, что вы также можете:
myStringContainingInt.intValue;
источник
[myStringContainingInt intValue];
также можно написать какmyStringContainingInt.intValue;
myStringContainingInt
слишком велико, чтобы поместиться в 32 бита - на самом деле 31 бит, поскольку он подписан?-[NSString intValue]
можете вести себя не так, как вы ожидаете. Из документации : это свойство равно 0, если строка не начинается с допустимого десятичного текстового представления числа. Например,[@" 2 asdghjk" intValue]
вернется2
.Вы можете просто преобразовать строку вроде этой [str intValue] или [str integerValue]
integerValue Возвращает значение NSInteger текста получателя.
для получения дополнительной информации обратитесь сюда
источник
_returnedArguments
- массив,NSStrings
которогоUITextField text
ожидает свойство. Конвертировать не нужно.Ошибка синтаксиса:
Если у вашего _appDelegate есть
passwordField
свойство, вы можете установить текст, используя следующиеисточник
passwordField.text
это второй аргументloggedIn:::
метода и[[_returnedArguments objectAtIndex:2] intValue]
третий аргумент. Ничего не передается в собственность.По сути, третий параметр в
loggedIn
не должен быть целым числом, это должен быть какой-то объект, но мы не можем знать наверняка, потому что вы не указали параметры в вызове метода. Предоставьте подпись метода, чтобы мы могли убедиться. Возможно, это нужноNSNumber
или что-то в этом роде.источник
int*
- на самом деле, это кажется мне довольно вероятным, поскольку многие люди, которые пишут Objective-C, не изучая основ C, предполагают, что типы параметров просто включают звездочки как часть своего синтаксиса.Имейте в виду, что международные пользователи могут использовать десятичный разделитель, кроме
.
случаев, когда значения могут смешиваться или просто становиться нулевыми при использованииintValue
в строке.Например, в Великобритании
1.23
написано1,23
, так что число1.777
будет вход со стороны пользователя , как1,777
, который, как.intValue
, будет1777
не1
(усеченной).Я сделал макрос, который преобразует вводимый текст в NSNumber на основе аргумента языкового стандарта, который может иметь значение nil (если nil, используется текущая локаль устройства).
источник
Если я вас правильно понял, вам нужно конвертировать
NSString
вint
? Попробуйте этот кусок кода:источник
intValue
метод. developer.apple.com/iphone/library/documentation/cocoa/…