Swift

2016-04-13 22 views
2

'daki NSMutableDictionary içinde bir anahtar için belirli bir dizgede bir değere sahip bir diziye nasıl eklenir Swift'de NSMutableDictionary içinde bir anahtar için belirli bir dizgede bir değere nasıl ekleneceğini bilmek isterim?Swift

let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n",1],"2":[1,2,3,4,"+","o","6","2"]] 

Nasıl yapmalı:

let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n"],"2":[1,2,3,4,"+","o","6","2"]] 

ben gibi görünmelidir yani 6. dizindeki 1 anahtar "1" değerine eklemek istediğiniz şu şekildedir:

Ben bir sözlük var o?

cevap

0

Sözlüğünüz anahtar/değer çiftleri içeriyor. Değerler veya diziler. Değerlerden birini değiştirmek istersiniz. Bunu yapmak için, eğer değer (dizi) değiştirilebilirse, "1" tuşunun değerini okursunuz ve değiştiriniz. Değer değiştirilemezse, "1" tuşu için eski değeri okursunuz, içermek istediğiniz içeriği içeren yeni bir dizi oluşturun ve "1" tuşu altında bu yeni değeri tekrar kaydedin. Eğer örnekte, belirli bir anahtar için (yöntemini seçerseniz

0

Bir şey diziyi değiştiremiyorsanız

var res = xyz["1"] //the result is the array 
res.append(1) // assuming you can change the array 

gibi sen

var res = xyz["1"] 
var newArr = res 
newArr.append(1) 
xyz["1"] = newArr 
+0

sonuçlanan o bunu böyle eklemek için yavaş değil midir? – Nasiba

+0

Ve diziye eklenemiyor çünkü NSMutableDict nedeniyle olağan Swift Array'den farklı bir sınıfa sahip. – Nasiba

+0

Yani diziyi değiştiremezsiniz diye yazdığım dört satırı kullanın. Orada yeni bir dizi oluşturuyorsunuz, böylece ona ekleyebiliyorsunuz. – Roee84

1

gibi bir şey gerekir "1")

  • ekstre kesilebilir bir kopya değer dizisi,
  • sen söylemelisin,
  • verilen anahtar için orijinal diziyi (değer) üzerine,

bu kopya mutasyona (bu durumda, dökme girişimi) Swift değer dizisi bir dizi olduğunu o Aksi takdirde, AnyObject ([AnyObject]) türünde örneğidir, aksi takdirde, anahtar tek bir AnyObject olarak ayıklanır. Sadece birincisi için Swift, elementleri (bir diziye) ekleyebileceğimizin farkına varırken, ikincisi için, Swift, elemanların tek bir AnyObject değerine eklememize izin verir (bir dizi sararsa bile).

E.g.

let xyz: NSMutableDictionary = ["1":[1,2,3,4,"1","n"],"2":[1,2,3,4,"+","o","6","2"]] 

let appendValue = "1" 
let forKey = "1" 
if var arr = xyz[forKey] as? [AnyObject] { 
    arr.append(appendValue) 
    xyz[forKey] = arr 
} 

print(xyz) 

{ 
    1 =  (
     1, 
     2, 
     3, 
     4, 
     1, 
     n, 
     1 
    ); 
    2 =  (
     1, 
     2, 
     3, 
     4, 
     "+", 
     o, 
     6, 
     2 
    ); 
}