Как решить ошибку сигнала sigabrt в Swift при чтении файла JSON с жесткого диска компьютера? - PullRequest
0 голосов
/ 22 января 2019

У меня есть файл json на моем компьютере.Я пытаюсь прочитать это с помощью этого кода:

func ReadQuestion(){  
    let path = "/Users/bishnudas/Documents/ExamFiles/questions.json"  
    do {  
        let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)  
        if(data.count != 0){  

            let jsonResult = try JSONSerialization.jsonObject(with: data)  
            self.exampage.ExamQuestion = data  
            self.exampage.showWindow(nil)  
            self.window?.close()  
        }  
    } catch {  
        print(error)  
    }  
}  

После прочтения этого файла JSON я отправляю данные в другое окно и пытаюсь преобразовать эти данные следующим образом:

func LoadQuestionPaper(){  
    do{  
        let QSJS = try JSONSerialization.jsonObject(with: ExamQuestion!, options:JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary  //Getting error signal sigabrt here        

    }catch {  
        print(error)  
    }  
}  

Сообщение об ошибке в консоли:

Не удалось преобразовать значение типа '__NSArrayM' (0x7fffa16f0fd0) в 'NSDictionary' (0x7fffa16f32d0).
2019-01-21 13: 39: 50.214466 + 0530 UnoxСтуденческая консоль [2071: 66993] Не удалось преобразовать значение типа '__NSArrayM' (0x7fffa16f0fd0) в 'NSDictionary' (0x7fffa16f32d0).
Печать описания QSJS:
(NSDictionary) QSJS =

Моя файловая структура json:

[{
    "id": 1,
    "type": "sub",
    "text": "{\\rtf1\\ansi\\ansicpg1252\\uc1\\htmautsp\\deff2{\\fonttbl{\\f0\\fcharset0 Times New Roman;}{\\f2\\fcharset0 Segoe UI;}}{\\colortbl\\red0\\green0\\blue0;\\red255\\green255\\blue255;}\\loch\\hich\\dbch\\pard\\plain\\ltrpar\\itap0{\\lang1033\\fs18\\f2\\cf0 \\cf0\\ql{\\fs24\\f0\\b {\\lang2057\\ltrch Short notes: Concept based (20 marks)}\\li0\\ri0\\sa0\\sb0\\fi0\\qj\\par}\r\n{\\fs24\\f0\\b {\\ltrch }\\li0\\ri0\\sa0\\sb0\\fi0\\qj\\par}\r\n{\\f2 {\\ltrch }\\li0\\ri0\\sa0\\sb0\\fi0\\ql\\par}\r\n}\r\n}",
    "num_toans": 4,
    "total_marks": 20,
    "questions": [{
        "IsAnswered": null,
        "markedForReview": null,
        "id": 1,
        "marks": 5,
        "type": "etq",
        "q_text": "{\\rtf1\\ansi\\ansicpg1252\\uc1\\htmautsp\\deff2{\\fonttbl{\\f0\\fcharset0 Times New Roman;}{\\f2\\fcharset0 Segoe UI;}}{\\colortbl\\red0\\green0\\blue0;\\red255\\green255\\blue255;}\\loch\\hich\\dbch\\pard\\plain\\ltrpar\\itap0{\\lang1033\\fs18\\f2\\cf0 \\cf0\\ql{\\fs24\\f0 {\\lang2057\\ltrch Why will ABC unit cost figures be different from TCA unit cost figures}{\\lang2057\\ltrch \\rdblquote }{\\lang2057\\ltrch ?}\\li0\\ri0\\sa0\\sb0\\fi0\\ql\\par}\r\n}\r\n}",
        "attachments": null,
        "choices": null,
        "tfq_ans": null,
        "blank_count": 0,
        "fitb_ans": null,
        "mcq_index": -1,
        "mcq_text": null,
        "excel_ans_attachment": "0",
        "word_ans_attachment": "0",
        "essay_ans_attachment": null,
        "subSections": null
    },
    ...
    ]
}]

Может кто-нибудь помочь мне решить эту проблему или предложить мне правильный способ преобразования этих данных в словарь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...