我有一个NSAttributedString
可以包含 3 个不同的东西:
- 只是一个图像。(一个附件)
- 只是文字
- 图像后跟文本(/!\ 不是相反,永远不会)。
我正在尝试“扫描”该对象以了解我是否有图像或文本,如果有图像,之后是否有文本。
我不习惯使用枚举和范围参数;文档并没有真正帮助我理解如何完成这项工作。
您将如何实现这一目标?
- 如果有,则提取图像
- 如果有一个字符串(单独或在图像之后),则提取字符串。
我现在拥有的唯一代码来自另一篇 SO 帖子,如果只有一张图片,它会很有帮助。
NSAttributedString *currentString = self.inputToolbar.contentView.textView.attributedText;
__block UIImage *currentImage = nil;
[currentString enumerateAttribute:NSAttachmentAttributeName
inRange:NSMakeRange(0, [currentString length])
options:0
usingBlock:^(id value, NSRange range, BOOL *stop)
{
if ([value isKindOfClass:[NSTextAttachment class]])
{
NSTextAttachment *attachment = (NSTextAttachment *)value;
UIImage *image = nil;
if ([attachment image])
image = [attachment image];
else
image = [attachment imageForBounds:[attachment bounds]
textContainer:nil
characterIndex:range.location];
if (image)
currentImage = image;
}
}];