有的时候我们可能会需要给AttributedString也就是属性字符串设置属性,然后在另外一个地方进行处理,我们也可以通过这个方式进行传值,具体操作可以如下所示这里我们是先创建一个数组,创建完毕之后,我们再去通过设置属性,这样我们可以在另外一个地方可以去获取到它的值,然后通过遍历可以做相应的操作。下面的一个方法这里面的range,传入的是一个地址,这样我们再把range给取出来就可以得到的是在下面这个index索引处所得到的属性的设置的范围,也可以这么解释effectiveRange参数是引用参数,该参数反映了在所检索的位置上,字符串中具有当前的属性的范围。
- (nullable id)attribute:(NSAttributedStringKey)attrName atIndex:(NSUInteger)location effectiveRange:(nullable NSRangePointer)
range;
用法如下所示
NSArray * array = [[NSArray alloc]init];
array=@[@(1)];
NSMutableAttributedString * attributedText = [[NSMutableAttributedString alloc]init];
NSAttributedString * attributedString = [[NSAttributedString alloc]initWithString:@"哈哈哈"];
[attributedText appendAttributedString:attributedString];
NSAttributedString * attributedString1 = [[NSAttributedString alloc]initWithString:@"没没没"];
[attributedText appendAttributedString:attributedString1];
[attributedText addAttribute:@"NSAttributeKey" value:array range:NSMakeRange(0, 1)];
[attributedText enumerateAttributesInRange:NSMakeRange(0, attributedText.length) options:0 usingBlock:^(NSDictionary
<NSAttributedStringKey,id> * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {
//NSLog(@"%@",attrs[@"NSAttributeKey"]);
id value = [attributedText attribute:@"NSAttributeKey" atIndex:0 effectiveRange:NULL];
NSLog(@"%@",value);
}];