2016-06-19 14 views
0

In meiner Swift Klasse I hat:Swift Wörterbuch in Objective-C als NSMutableDictionary

class Model : NSObject { 

    var localSettings = Dictionary<String, NSNumber>() 

    class var sharedInstance: Model { 
     struct Singleton { 
      static let instance = Model() 
     } 

     return Singleton.instance 
    } 
} 

ich meine neue Swift Modellklasse von Objective-C-Klasse aufrufe. Ich habe keine Probleme lokale Einstellungen dictionary zu lesen, aber wenn ich versuche, es zu ändern:

self.model.localSettings[@"Key"] = @1; 

Ich erhalte Fehler kompilieren:

Expected method to write dictionary element not found on object of type 'NSDictionary<NSString *,NSNumber *> *' 

Ich verwende Xcode 8 und Swift 2.3

Antwort

0

Jedes Mal, wenn Sie Ändere ein dict/array in Swift, der Setter wird erneut aufgerufen, dies würde auf ObjC nicht passieren, wenn du ein neues Element zur Sammlung hinzufügst. Ich denke, das ist der Grund, warum änderbare Sammlungen zu ihrem unveränderlichen Äquivalent überbrückt werden.

Sie könnten eine veränderbare Kopie erstellen, ändern und auf die Eigenschaft festlegen, aber das wäre ziemlich ausführlich.

Verwandte Themen