gpt4 book ai didi

cocoa - 如何从 NSAttributedString 获取图像数据

转载 作者:行者123 更新时间:2023-12-03 16:05:08 26 4
gpt4 key购买 nike

我有一个 NSTextView。我将图像粘贴到其中并查看它。当我获取 TextView 的 NSAttributedString 的 NSTextAttachment 时,它的文件包装器为零。如何获取粘贴到 TextView 中的图像数据?

我正在使用 NSAttributedString 上的类别来获取文本附件。如果可能的话,我宁愿不写入磁盘。

- (NSArray *)allAttachments
{
NSError *error = NULL;
NSMutableArray *theAttachments = [NSMutableArray array];
NSRange theStringRange = NSMakeRange(0, [self length]);
if (theStringRange.length > 0)
{
NSUInteger N = 0;
do
{
NSRange theEffectiveRange;
NSDictionary *theAttributes = [self attributesAtIndex:N longestEffectiveRange:&theEffectiveRange inRange:theStringRange];
NSTextAttachment *theAttachment = [theAttributes objectForKey:NSAttachmentAttributeName];
if (theAttachment != NULL){
NSLog(@"filewrapper: %@", theAttachment.fileWrapper);
[theAttachments addObject:theAttachment];
}
N = theEffectiveRange.location + theEffectiveRange.length;
}
while (N < theStringRange.length);
}
return(theAttachments);
}

最佳答案

  1. 枚举附件。 [NSTextStorage enumerateAttribute:...]
  2. 获取附件的文件包装器。
  3. 写入 URL。

    [textStorage enumerateAttribute:NSAttachmentAttributeName
    inRange:NSMakeRange(0, textStorage.length)
    options:0
    usingBlock:^(id value, NSRange range, BOOL *stop)
    {
    NSTextAttachment* attachment = (NSTextAttachment*)value;
    NSFileWrapper* attachmentWrapper = attachment.fileWrapper;
    [attachmentWrapper writeToURL:outputURL options:NSFileWrapperWritingAtomic originalContentsURL:nil error:nil];
    (*stop) = YES; // stop so we only write the first attachment
    }];

此示例代码只会将第一个附件写入到outputURL。

关于cocoa - 如何从 NSAttributedString 获取图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com