【问题标题】:Swift : An array of [String : NSImage]Swift : [String : NSImage] 的数组
【发布时间】:2015-02-09 03:58:04
【问题描述】:

我正在尝试创建一个 dictionary<String,NSImage> 数组,
所以我这样做:

class PreferencesController : NSObject{

var generalImage = NSImage(named: "NSAdvanced");
var textEditingImage = NSImage(named: "NSFontPanel");
var GUIImage = NSImage(named: "NSColorPanel");

var preferencesOptionTableList : NSMutableArray = [
    ["name":"General"],
    ["name":"Text Editing"],
    ["name":"GUI"]];

var preferencesOptionTableImageList : [[String:NSImage]] = [["image":textEditingImage]];
}

但我得到了这个错误:

PreferencesController.Type does not have a member named 
'textEditingImage'

请帮助我,经过一个小时的搜索,我仍然不知道该怎么做

【问题讨论】:

    标签: cocoa swift nsarray nsdictionary nsimage


    【解决方案1】:

    我看到两个可能的问题:

    1. textEditingImage 很可能是一个可选的NSImage?,而不是NSImage,当你将它放入字典时,这很可能是一个问题。我怀疑你需要先打开它。
    2. var preferencesOptionTableList : NSMutableArray... 应该拆分为声明和定义,并将定义移至 init,可能如下所示:

      class PreferencesController: NSObject {
      
      
      var textEditingImage:NSImage = NSImage(named: "NSFontPanel")!
      
      var preferencesOptionTableImageList : [[String:NSImage]]
      
      override init() {
          preferencesOptionTableImageList = [["image":textEditingImage]]
          super.init()
       }
      }
      

    【讨论】:

    • 您好,感谢您的回复。我试过这个“var preferencesOptionTableImageList = [NSDictionary(object: textEditingImage?, forKey: "image")]; "但仍然是同样的错误
    • @Ql HaoYan,添加一个?在可选的末尾只为链式事件解包。试试 var textEditingImage = NSImage(named: "NSFontPanel")!
    • 另外,请注意删除 ;在所有语句的末尾,您不必指定常量或变量类型,除非您必须指定它们.... Swift 不是 Obj-C
    • 那行得通,非常感谢。但我想知道为什么当我将“preferencesOptionTableImageList = [[“image”:textEditingImage]]”从“init()”中取出时出现错误“预期声明”
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多