Как преобразовать данные в Swift из NSArray в словарь? - PullRequest
0 голосов
/ 24 апреля 2018

Мне нужно преобразовать NSArray в словарь, но я не знаю, как мне это сделать.

После запроса на выборку у меня получился NSArray.Это мой запрос:

 var results: NSArray = []

func fetchUpdateAttendee() {
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Attendee")
    let predicate = NSPredicate(format: "needUpdate != false")
    fetchRequest.predicate = predicate

    results = try! DBWorker.context.fetch(fetchRequest) as NSArray
    results.forEach { result in
        print(result)
    }

var results: NSArray = [] print(results) дай мне

<Attendee: 0x60c000097750> (entity: Attendee; id: 0x60c000422200 <x-coredata:///Attendee/t9E88E2EE-9258-4FAE-AF80-9B036838C6D631> ; data: {
address = "1411 E 31st St";
affiliation = "";
attendeeType = nil;
city = Aguanga;
degree = MD;
email = "";
fax = "";
firstName = Oliver1212;
fullStateLicense = "";
id = nil;
lastName = Aalami;
meeting = nil;
needUpdate = 1;
phone = "";
signature = nil;
signatureTimeStamp = nil;
specialty = Surgery;
state = CA;
stateLicense = "";
status = nil;
timeStamp = nil;
zip = 92536;
})

Мне нужно поместить эти данные в: let dic4Attendee: [String: Any] = [:]

1 Ответ

0 голосов
/ 24 апреля 2018

Это подкласс Core Data NSManagedObject, поэтому код должен быть

var results = [Attendee]() 


func fetchUpdateAttendee() {
    let fetchRequest = NSFetchRequest<Attendee>(entityName: "Attendee")
    let predicate = NSPredicate(format: "needUpdate == TRUE")
    fetchRequest.predicate = predicate

    do {
        results = try DBWorker.context.fetch(fetchRequest)
        results.forEach { result in
           print(result)
        }
    } catch { print(error) }
}

никогда используйте NSArray для представления массива подкласса NSManagedObject.


Добавьте свойство dictionaryRepresentation в класс Attendee и верните необходимые пары ключ-значение, например

var dictionaryRepresentation : [String:Any] {
   return ["address" : address,
           "affiliation" : affiliation,
           "city" : city          
            // and so on
          ]
}

затем сопоставьте массив

let mappedArray = results.map{ $0.dictionaryRepresentation }
...