2014-10-26 6 views
0

Так я это NSDictionary itemsDict (в Swift):Добавить конкретные элементы из NSDictionary к NSArray

var itemsDict : NSDictionary = [:] // Dictionary 
var Sections : NSArray = [] // Array 

itemsDict = [ 
["News"]:["a":"www.hello.co.uk","b":"www.hello.com"], 
["Sport"]:["c":"www.hello.co.uk","d":"www.hello.com"], 
    ] 

    print (itemsDict) 

Это как структура словаря выглядит следующим образом:

{ 
     (
     News 
    ) =  { 
     a = "www.hello.co.uk"; 
     b = "www.hello.com"; 
    }; 
     (
     Sport 
    ) =  { 
     c = "www.hello.co.uk"; 
     d = "www.hello.com"; 
    }; 
} 

из словарь выше Я хочу, чтобы иметь возможность заполнить NSArray только с элементами - [News,Sports]. Я пробовал это и несколько других методов, но они просто не режут его. Мои навыки Swift не настолько продвинуты, и я надеюсь, что этот пост имеет смысл.

Sections = itemsDict.allKeysForObject(<#anObject: AnyObject#>) 
+2

Ваша структура словаря выглядит немного странно, с (вложенными) словарями как в виде ключей, так и значений. Вы уверены, что вам не нужен массив словарей? –

+0

@MartinR Вы правы. Я исправил словарь. Разве это все еще возможно? – Led

+0

Вы уверены, что хотите использовать массив строк в качестве словарного ключа? Похоже, вы просто хотите, чтобы там была строка. '" Новости ": [" Местные новости ":" ... "]' и т. Д. –

ответ

1

Чтобы получить Array всех String с в ключах ваших Dictionary «S, вы можете использовать allKeys свойство NSDictionary вместе с reduce функции, например, так:

var itemsDict = [ 
    ["News"]:["a":"www.hello.co.uk","b":"www.hello.com"], 
    ["Sport"]:["c":"www.hello.co.uk","d":"www.hello.com"], 
] 

let keys = (itemsDict.allKeys as [[String]]).reduce([], combine: +) 

println(keys) 

Выходы:

[News, Sport] 

Однако, я не вижу веских оснований для использования Array s из String s как ваши Dictionary ключей. Вместо этого, я бы просто использовать String S в качестве ключей непосредственно, например, так:

var itemsDict = [ 
    "News":["a":"www.hello.co.uk","b":"www.hello.com"], 
    "Sport":["c":"www.hello.co.uk","d":"www.hello.com"], 
] 

В этом случае, получение Array из Dictionary «клавиши ы так просто, как:

let keys = itemsDict.keys.array 

Примечание: Я использую свойство keys здесь и свойство allKeys ранее, потому что это родной Swift Dictionary, а более ранний код - NSDictionary из-за его использования NSArray s для ключа s.

+0

Perfect thank you Mike - Now Я знаю, где я ошибся, Точно, что мне нужно :) – Led

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