У меня есть NSAttributedString
, который может содержать 3 разные вещи:Split NSAttributedString в Image + NSString
- Просто изображение. (приложение)
- Только текст
- Изображение, за которым следует текст (/! \, а не наоборот, никогда).
Я пытаюсь «отсканировать» этот объект, чтобы узнать, есть ли у меня изображение или текст, и есть ли изображение, если после этого есть текст.
Мне неудобно использовать параметры перечисления и диапазона; документация не помогла мне понять, как это сделать.
Как бы вы это достигли?
- Извлечение изображения, если есть один
- Извлечение строки, если есть один (либо отдельно, либо после того, как изображения).
Единственный код, который у меня есть сейчас, это другое сообщение 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;
}
}];
Убедитесь, что '[currentString string]' не возвращает вам только текст, даже если есть изображение. Если это так, у вас будет текст, и у вас уже есть код для получения изображения (кажется, это мой код кстати). – Larme
Это не делает трюк, очевидно :( –
Сохраните диапазон найденного изображения и используйте вместо него 'NSMutableAttributedString', и вы можете использовать' deleteCharactersInRange: 'для удаления изображения в этом диапазоне. – Larme