Быстрое приведение словарных результатов CoreData

#objective-c #xcode #core-data #swift

#objective-c #xcode #ядро-данные #swift

Вопрос:

в следующем коде я использую CoreData для получения отличных результатов:

     request.propertiesToFetch = NSArray(objects: "docID", "docName")
    request.resultType = NSFetchRequestResultType.DictionaryResultType
    request.returnsDistinctResults = true

    var distinctResults: NSArray = context.executeFetchRequest(request, error: nil)
    println(distinctResults)
 

Это результат println():

( { docID = 3; docName = «Доктор Гой»; }, { docID = 1; docName = «Доктор Бар»; }, { docID = 0; docName = «Доктор Фу»; }, { docID = 2; docName = «Мистер Баз»; } )

Это массив со словарями — как я могу преобразовать этот NSArray в словарь с помощью цикла for

Спасибо за помощь!

Комментарии:

1. В каком формате вы хотите, чтобы словарь был?

2. Извините — я хочу привести к словарю<Int, String>

Ответ №1:

NSArray можно использовать как массив, это сложнее, потому что структура вашего ответа таковой не Array<Dictionary<Int,String>> является, на самом деле там Array<Dictionary<String,Any>> , где Any — строка для docName , но int для docID .

 var dict = Dictionary<Int, String>()
for nsdict in distinctResults as Array<NSDictionary> {
    let docId = nsdict.valueForKey("docID") as? NSNumber as? Int
    let docName = nsdict.valueForKey("docName") as? String

    if docId amp;amp; docName {
        dict[docId!] = docName!
    }
}