2012-07-30 2 views
2

속성이있는 Person 클래스의 person 개체가 주소, 나이입니다. 결과는 NSString의 길이가 6 인 것처럼 보입니까?

 NSLog(@"Add: %@, length: %i", person.address, [person.address length]); 

입니다

: 추가 : 무기 호, 길이 : 내가 속성을 확인하면, 나는 함께 화면에 주소를 인쇄 6

문자열이 null 그런데 왜 당신은 나를 설명 할 길이 쇼 6 시까 지?

감사합니다.

+0

불가능합니다. % @ 사람을 로그에 남기고 출력을 표시 할 수 있습니까 ??? –

답변

0

주소 유형은 무엇입니까? NSString 가정? % i 대신 % d 또는 % lu를 사용하고 % lu를 사용하는 경우 unsigned long으로 캐스트하십시오. 올바른 결과를 얻을 수 있습니다.

Length는 결과적으로 NSUInteger를 제공하므로 올바른 문자열 형식 지정자는 % lu가되지만 % d도 작동해야합니다 (생각하면 항상 % d을 사용합니다). 나는 형식에서

NSLog(@"%lu", (unsigned long)string.length) 

봐 지정하지 ... %의 내가 같이

https://developer.apple.com/library/mac/ipad/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

0

당신은 아마 찾고있는 대답은 : 잘못된 문자열 형식 지정자를 사용하고 있습니다. 나는 무엇이 %i인지 확실하지 않다. %d는 정수와 부호에 대한 %u입니다, 그래서 당신이 필요합니다 길이는 아마도 당신이 생각하는 무엇을 반환하지 않습니다 ...

NSLog(@"Add: %@, lenght: %u", person.address, [person.address length]); 

을하지만.

person.addressnil 인 경우 메시지를 length에게 보내면 길이가 반환되지 않습니다 ("아무것도 표시하지 않음"의 길이는 얼마입니까?). 결과적으로 Objective C 런타임 will return zero이 예제가 "작동하지만"틀림없이 정확하지는 않습니다.

1

필드에 "(null)"이라는 문자열 값이 6 자 길이로 표시됩니다.

관련 문제