[iphone] ObjectiveC 문자열에서 정수 구문 분석
배열에서 문자열 (정수 포함)을 추출한 다음 함수에서 int로 사용하려고합니다. intValue를 사용하여 int로 변환하려고합니다.
여기 제가 시도한 코드가 있습니다.
NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
이 오류가 발생합니다.
‘loggedIn :::’의 인수 3을 전달하면 캐스트없이 정수에서 포인터를 만듭니다.
뭐가 문제 야?
답변
이 질문에 대해 무엇이 그렇게 어려웠는지는 모르겠지만 이렇게 할 수있었습니다.
[myStringContainingInt intValue];
다음을 수행 할 수도 있습니다.
myStringContainingInt.intValue;
답변
[str intValue] 또는 [str integerValue]와 같은 문자열을 변환 할 수 있습니다.
integerValue 수신자 텍스트의 NSInteger 값을 반환합니다.
- (NSInteger) integerValue 반환 값 10 진수 표현을 가정하고 문자열 시작 부분의 공백을 건너 뛰는 수신자 텍스트의 NSInteger 값입니다. 수신자가 숫자의 유효한 십진 텍스트 표현으로 시작하지 않으면 0을 반환합니다.
답변
NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"];
_returnedArguments
의 배열 NSStrings
들에서 which UITextField text
재산권 기대된다. 변환 할 필요가 없습니다.
구문 오류 :
[_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]];
_appDelegate에 passwordField
속성 이있는 경우 다음을 사용하여 텍스트를 설정할 수 있습니다.
[[_appDelegate passwordField] setText:[_returnedArguments objectAtIndex:2]];
답변
기본적으로의 세 번째 매개 변수 loggedIn
는 정수가 아니어야하며 어떤 종류의 객체 여야하지만 메소드 호출에서 매개 변수의 이름을 지정하지 않았기 때문에 확실하게 알 수 없습니다. 확실히 볼 수 있도록 메서드 서명을 제공합니다. 아마도 그것은 NSNumber
또는 무언가 가 필요합니다 .
답변
국제 사용자는 문자열 .
에서 사용할 때 값이 혼합되거나 nil이되는 경우 이외의 소수 구분 기호를 사용할 수 있습니다 intValue
.
예를 들어, UK에서 1.23
작성된 1,23
수 있도록 1.777
같은 사용자에 의해 입력 될 1,777
뿐, .intValue
일 것이다 1777
하지 1
(절단)를.
nil 일 수있는 로케일 인수를 기반으로 입력 텍스트를 NSNumber로 변환하는 매크로를 만들었습니다 (nil 일 경우 장치 현재 로케일을 사용함).
#define stringToNumber(__string, __nullable_locale) (\
(^NSNumber *(void){\
NSLocale *__locale = __nullable_locale;\
if (!__locale) {\
__locale = [NSLocale currentLocale];\
}\
NSString *__string_copy = [__string stringByReplacingOccurrencesOfString:__locale.groupingSeparator withString:@""];\
__string_copy = [__string_copy stringByReplacingOccurrencesOfString:__locale.decimalSeparator withString:@"."];\
return @([__string_copy doubleValue]);\
})()\
)
답변
내가 제대로 이해하면, 당신은 당신의 변환해야 NSString
에를 int
? 이 코드의 평화를 시도하십시오.
NSString *stringWithNumberInside = [_returnedArguments objectAtIndex:2];
int number;
sscanf([stringWithNumberInside UTF8String], "%x", &flags);