#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!
}
}