2015-02-09 3 views
0

Я пытаюсь создать массив dictionary<String,NSImage>,
, так что я это сделать:Swift: массив [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' 

Пожалуйста, помогите мне Я все еще не знаю, что делать после часа поиска

ответ

0

Я вижу две возможные проблемы:

  1. textEditingImage, скорее всего, дополнительный NSImage?, а не NSImage, что, скорее всего, будет проблемой, если вы поместите его в словарь. Я подозреваю, что сначала вам нужно развернуть его.
  2. вар preferencesOptionTableList: NSMutableArray ... следует разделить на декларации и определение и определение переехал в инициализации, возможно, как это:

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

Привет, спасибо за ответ. Я попробовал это «var preferencesOptionTableImageList = [NSDictionary (object: textEditingImage ?, forKey:« image »)]; », но все та же ошибка –

+0

Смотрите мое новое обновление с примером (непроверенным). – MirekE

+0

@Ql HaoYan, добавив? в конце опционального только разворачивает его для прикованных событий. Попробуйте var textEditingImage = NSImage (с именем: "NSFontPanel")! – TheCodingArt

Смежные вопросы