【问题标题】:Get NSImage from NSTextField in Swift在 Swift 中从 NSTextField 获取 NSImage
【发布时间】:2014-12-05 18:13:40
【问题描述】:

我曾经像这样从 Obj-C 检索 NSTextField 子类中的 NSImage:

  NSDictionary *attributedVal = [[self attributedStringValue] attributesAtIndex:i effectiveRange:&effectiveRange];
  if ([[attributedVal allKeys] containsObject:NSAttachmentAttributeName]) {
    NSTextAttachment *attachment = [attributedVal valueForKey:NSAttachmentAttributeName];
    NSCell *attachmentCell = (NSCell *)[attachment attachmentCell];
    ... [[attachmentCell image] name] ...
  } 

当我尝试在 Swift 中做同样的事情时,我似乎无法转换 attachmentCell 但得到一个编译器错误:

  let attributedVal = attributedStringValue.attributesAtIndex(i, effectiveRange: effectiveRange)
  if let attachment = attributedVal[NSAttachmentAttributeName] as? NSTextAttachment {
    let attachmentCell = attachment.attachmentCell as NSCell // does not work
    ...
  }

【问题讨论】:

  • 您可以转为 NSTextAttachmentCell 吗? attachment.attachmentCell 在 Swift 中属于 NSTextAttachmentCellProtocol 类型,NSCell 不符合,但 NSTextAttachmentCell 符合。

标签: swift nstextfield nscell nstextattachment


【解决方案1】:

感谢内特库克。以下作品:

  let attributedVal = attributedStringValue.attributesAtIndex(i, effectiveRange: effectiveRange)
  if let attachment = attributedVal[NSAttachmentAttributeName] as? NSTextAttachment {
    let attachmentCell = attachment.attachmentCell as NSTextAttachmentCell
    let image = attachmentCell.image
    ...
  }

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多