2014-09-10 4 views
1

문제점 (아마도 해결하기가 쉽지만 Obj-C가 새로 도입되었습니다.) 작성한 NSRange의 위치와 길이를 인쇄하고 싶지만 . 오류 메시지가 여기에 코드위치 및 길이의 NSRange 출력

NSRange tmpRange = [newData rangeOfData:segmentToFind options:kNilOptions range:NSMakeRange(0u, [newData length])]; 

NSLog(@"%@ - range location : %lu", [tmpRange location]; 

내가 오류 메시지는 다음과 같습니다

Bad receiver type 'NSRange' (aka 'struct _NSRange') 
+1

두 개의 자리 표시 자 및 'NSLog'에 하나의 인수 만 있습니다. – Larme

답변

2

솔루션 :

A. 당신은 각 구성 요소를 별도로 로그인 할 필요가 :

NSLog(@"%lu - %lu", (long)range.location, (long)range.length); 

B. 당신은 NSString의 인스턴스로 변환 한 다음 문자열 로그인 할 수 있습니다 :

{1, 2} 

NSStringFrom…()-description 유사하며 NSSize을 포함하여 다양한 종류의 존재

NSLog(@"%@", NSStringFromRange(range)); 

출력 , NSPoint.

+0

+1은 NSStringFrom ... 함수를 언급합니다. – gnasher729

0

NSRange는 NS로 시작하지만 NSObject가 아닙니다. C 또는 C++ 구조체와 같은 일반적인 구조체입니다. 따라서 위치와 길이에 액세스하려면 range.location과 range.length를 사용하면됩니다. NSRect, NSPoint, NSSize와 같은 다른 구조체가 있습니다.

당신은 이미 컴파일러가 말한 것을 보았습니다. NSRange는 "struct _NSRange {...}"유형의 typedef입니다.

그리고 NS로 시작하지만 실제로는 기본 유형 (int 또는 long, 부호없는 int 또는 부호없는 long) 인 NSInteger 및 NSUInteger와 같은 유형이 있습니다.