2015-05-28 2 views
0

Я делаю приложение для викторины химии. вопросы должны быть в форме изображений из-за молекул. Ниже приводится часть кода у меня возникли проблемы с:используя JSON для извлечения изображений

func getconcept1questions() -> [Concept1Questions] { 
    // chercher json file 
    var questions:[Concept1Questions] = [Concept1Questions]() 

    // chercher json array de dictionaires 
    let jsonobjects: [NSDictionary] = self.getjsonfile() 

    var index:Int 
    for index = 0; 
     index < jsonobjects.count; index++ 
    { 
      // json dictionaire actuel 
      let jsondictionary:NSDictionary = jsonobjects[index] 

      // creer un objet question 
      var questionobject:Concept1Questions = Concept1Questions() 

      // assigner les valuers de chaque couple à l'objet question 
      questionobject.question = UIImage(named: jsondictionary["question"] as! String) 
      questionobject.answer = UIImage(named: jsondictionary["answer"] as! String) 
      questions.append(questionobject) 
    } 

в основном, цель этой функции, чтобы получить вопросы (которые изображения) из файла JSON. в файле JSon, имена являются строками, например:

"question":"conceptquestion1", 
answer":"conceptanswer1" 

изображений сохраняются в активах изображений в проекте Xcode.

В этой строке кода конкретно, я получаю сообщение об ошибке:

// assigner les valuers de chaque couple à l'objet question 
questionobject.question = UIImage(named: jsondictionary["question"] as! String) 
questionobject.answer = UIImage(named: jsondictionary["answer"] as! String) 

Сообщение об ошибке говорит:

«не может присвоить значение типа„UIImage“к типу» String "

любые идеи о том, как заставить сына отображать изображение? Мне просто нужно признать, что данные, которые он ищет, должны совпадать с именем файла изображения i hav e сохранен в папке с изображениями.

У меня есть еще одна функция для получения json-файла (функция, которая вызывается выше в строке 8). Вот эта функция, просто упаковывают это может помочь:

func getjsonfile() -> [NSDictionary] { 
    // faire un objet nsurl qui dirige vers le fichier json dans notre app bundle 
    let appBundlePath:String? = NSBundle.mainBundle().pathForResource("concept1", ofType: "json") 

    // ici on utilise optional binding pour verifier qu'il y a bien une voie vers le fichier 
    if let realbundlepath = appBundlePath { 
     // la voie existe 
     let urlpath:NSURL? = NSURL(fileURLWithPath: realbundlepath) 

     if let realurlpath = urlpath { 
      // l'objet USURL a été bien creé. maintenant on cree l'objet NSDATA 
      let jsondata:NSData? = NSData(contentsOfURL: realurlpath) 

      if let realjsondata = jsondata { 
       // nsdata existe. utiliser nsjsonserialization pour parser le data et creer l'array 
       let arrayofdictionaries:[NSDictionary]? = NSJSONSerialization.JSONObjectWithData(realjsondata, options: NSJSONReadingOptions.MutableContainers, error: nil) as! [NSDictionary]? 

       if let realarrayofdictionaries = arrayofdictionaries { 
        // on a reussi a parser l'array de diccionaires 
        return realarrayofdictionaries 
       } 
+0

Так какой тип questionObject.answer и questionObject.question? Согласно компилятору, компилятор считает, что это строки. Если они не являются строками, то узнайте, почему компилятор считает, что они есть. Если они являются строками, то чем вы пытаетесь присвоить изображение строке? – Gruntcakes

ответ

0

Я не знаю развития IOS, но я знаю JSON.

Что вы можете сделать, это кодировать изображения в base64. Это даст вам длинную строку, которую вы можете поместить как данные json.

Вы можете использовать этот веб-сайт, который кодирует изображения в base64 строку http://www.base64-image.de/

Там уже может быть библиотеки в вашем языке IOS, которые кодируют/декодирование строки base64.

Это довольно обычная вещь. Это позволяет переносить изображение как строковые данные, а не в двоичную форму.

Надеюсь, это поможет!

Update:

Быстрый поиск Google показал, что Swift имеет функции для кодирования изображения и декодирования base64 строки.

http://iosdevelopertips.com/swift-code/base64-encode-decode-swift.html

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