Kir*_*ari 3 iphone objective-c ios nsrange
我有一个包含NSRange元素的数组.
现在我可以使用数组的最后一个范围元素[resultArray lastObject].
当我访问最后一个元素时,它返回一些未知对象.(这意味着未知类)
现在我想将对象转换为NSRange.怎么做?
我的代码是:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:paraStartRegEx options:NSRegularExpressionCaseInsensitive error:&error];
NSArray *matches = [regex matchesInString:content options:0 range:NSMakeRange(0, [content length])];
NSObject *obj = [matches lastObject];
Run Code Online (Sandbox Code Playgroud)
如何将此对象转换为NSRange?
如果您已经阅读文档,你会注意到,该matchesInString:options:range:方法NSRegularExpression返回一个NSArray的NSTextCheckingResult对象,不是 NSRange S,所以这也难怪,你不能直接把他们救出来.
另外(你应该记住这个将来,因为这是一个重要的区别),NSRange是一个Cstruct,而不是一个Objective-C对象.这意味着它不能直接存储在NSArrays或其他Objective-C对象容器中. NSArray,NSDictionary和其他用于存储对象的Objective-C类只能存储Objective-C类型的对象,即作为a的实例的对象,Class并且可以将消息发送给它们[object method].
现在回到你的问题,你得到的数组matchesInString:options:range:包含NSTextCheckingResult对象,这些对象包含的信息不仅仅是匹配的范围,所以你不能只将它们转换为NSRange; 您需要访问range对象的属性才能获得所需内容:
NSTextCheckingResult *result = [matches lastObject];
NSRange range = [result range];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |