Я делаю приложение для викторины химии. вопросы должны быть в форме изображений из-за молекул. Ниже приводится часть кода у меня возникли проблемы с:используя 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
}
Так какой тип questionObject.answer и questionObject.question? Согласно компилятору, компилятор считает, что это строки. Если они не являются строками, то узнайте, почему компилятор считает, что они есть. Если они являются строками, то чем вы пытаетесь присвоить изображение строке? – Gruntcakes