2015-05-20 25 views
5

Tôi đang cố gắng tạo và chỉ định Swift Dictionary loại [String : String] tại thuộc tính SKSpriteNodeuserData yêu cầu số NSMutableDictionary. Khi tôi thử điều này, tôi nhận được thông báo lỗi:Từ điển Swift [String: String] tới NSMutableDictionary?

'[String : String]' is not convertible to 'NSMutableDictionary' 

Mọi người có thể chỉ cho tôi đúng hướng không?

// USER DATA 
    var dictionary: [String : String] = Dictionary() 
    dictionary["Orbit"] = orbit 
    dictionary["Zone"] = zone 
    dictionary["Impact"] = impact 
    var foundationDictionary = dictionary as NSMutableDictionary 
    neoSprite.userData = foundationDictionary 

Trả lời

24

Không có tệp được tích hợp sẵn cho việc này. Nhưng thay vào đó bạn có thể sử dụng initializer NSMutableDictionary 's mà phải mất một từ điển:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
+0

Được nhiều người đánh giá cao, Cảm ơn Airspeed, đơn giản hơn nhiều so với tôi mong đợi. – fuzzygoat

1

Bạn có thể thử để thay thế dòng này:

var foundationDictionary = dictionary as NSMutableDictionary 

Với mã này:

var foundationDictionary = NSMutableDictionary(dictionary: dictionary) 
2

Một câu trả lời khác cho câu trả lời ở trên là để từ điển của bạn để NSDictionary tạo ra một bản sao có thể thay đổi của nó và bỏ nó vào NSMutableDictionary. Quá phức tạp, phải không? Vì vậy, tôi khuyên bạn nên tạo NSMutableDictionary mới từ điển này chỉ là một sự thay thế

var foundationDictionary = (dictionary as NSDictionary).mutableCopy() as! NSMutableDictionary 
0

Từ điển

Tạo từ điển bất biến

let dictionary = ["Item 1": "description", "Item 2": "description"] 

Tạo từ điển có thể thay đổi

var dictionary = ["Item 1": "description", "Item 2": "description"] 

Nối cặp mới vào từ điển

dictionary["Item 3"] = "description" 
Các vấn đề liên quan