Objective c NSRange位置和长度的输出

Objective c NSRange位置和长度的输出,objective-c,nslog,nsrange,Objective C,Nslog,Nsrange,我有一个问题(也许这真的很容易解决,但我是Obj-C的新手)。 我想打印我创建的NSRange的位置和长度,但收到一条错误消息。下面是代码 NSRange tmpRange = [newData rangeOfData:segmentToFind options:kNilOptions range:NSMakeRange(0u, [newData length])]; NSLog(@"%@ - range location : %lu", [tmpRange location]; 我收到的错

我有一个问题(也许这真的很容易解决,但我是Obj-C的新手)。 我想打印我创建的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')
解决方案:

A.您必须单独记录每个组件:

NSLog( @"%lu - %lu", (long)range.location, (long)range.length );
B.您可以将其转换为
NSString
的实例,然后记录字符串:

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

{1, 2}

NSStringFrom…()类似于代码>描述< /代码>,它存在很多种类型,包括代码> NSistaby/Cube >,NSPITEN/CODE> > 

< NSRead从字母NS开始,但它不是NSObjor。它是一个普通的结构,如C或C++中的结构。因此,访问位置和长度,只需使用Range.位置和Range.长度.还有其他S像这样的卡车,比如NSRect、NSPoint、NSSize

您已经注意到编译器所说的:NSRange是类型“struct\u NSRange{…}”的typedef


还有像NSInteger和NSUInteger这样的类型,它们也以NS开头,但实际上只是基本类型(int或long、unsigned int或unsigned long)。

您有两个占位符,并且在
NSLog
+1中只有一个参数用于提及NSStringFrom…函数。