如何使用ranged属性创建不可变的NSAttributedString

Dan*_*all 0 objective-c nsattributedstring ios nsrange

如何NSAttributedString使用ranged属性初始化?

就目前而言,我只能弄清楚如何在初始化后添加一个ranged属性,这显然不适用于不可变NSAttributedString实例.

如果我有NSMutableAttributedString,我可以打电话:

[str addAttribute:NSLinkAttributeName value:url range:range];
Run Code Online (Sandbox Code Playgroud)

如果我有NSAttributedString,我可以构建它:

[[NSAttributedString alloc] initWithString:str attributes:@{NSLinkAttributeName: url}];
Run Code Online (Sandbox Code Playgroud)

但我找不到将范围放入attributesDict的方法.

谢谢,

mat*_*att 5

从NSMutableAttributedString开始.如果这不是您所拥有的,请通过调用mutableCopyNSAttributedString来创建可变副本.现在,你要做有NSMutableAttributedString.

所以现在做你需要做的事.

完成后,如果确实需要NSAttributedString,请调用copyNSMutableAttributedString以获取不可变副本.(但很难理解为什么你需要这样做,因为你总是可以传递NSMutableAttributedString,其中需要NSAttributedString.)