JSON APIコールから画像を読み込もうとしているときに問題があります。基本的に私は私のAPIを呼び出し、2番目のView Controllerに表示される画像URLを取得する関数を作成しました。現時点では、コンソールに印刷しているため、URLが正しく渡されていることを明確に確認できます。しかし、私はというエラーを取得しています私のUIImageを更新しようとすると:2番目のビューコントローラでUIImageを更新できません
致命的なエラー:ここ
class Exercise {
private var _id: Int!
private var _exerciseURL: String!
private var _imageUrl: URL!
var id: Int {
return _id
}
var exerciseURL: String {
return _exerciseURL
}
var imageURL: URL {
return _imageUrl // debug navigator is pointing at this line
}
init(name: String, description: String, id: Int) {
self._id = id
self._exerciseURL = "https://wger.de/api/v2/exerciseimage/?exercise=\(self.id)"
self._imageUrl = URL(string: "")
}
func parseImageData() {
let urlPath = _exerciseURL
let url = URL(string: urlPath!)
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print("Error while parsing JSON")
}
else {
do {
if let data = data,
let fetchedImageData = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any],
let images = fetchedImageData["results"] as? [[String: Any]] {
for eachImage in images {
let imageUrl = eachImage["image"] as! String
self._imageUrl = URL(string: imageUrl)
}
print(self.imageURL)
}
}
catch {
print("Error while parsing data.")
}
}
}
task.resume()
}
}
:これは私のモデルクラスファイルである
オプションの値をアンラップしながら、予想外にnilを見つけそのURLに基づいて画像を更新するはずの2番目のビューコントローラです。
class ExerciseDetailViewController: UIViewController {
var exercise: Exercise!
@IBOutlet weak var exerciseImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
exercise.parseImageData()
let data = NSData(contentsOf: exercise.imageURL)
exerciseImage.image = UIImage(data: data as! Data)
// Do any additional setup after loading the view.
}
}
私は
let data = NSData(contentsOf: exercise.imageURL)
exerciseImage.image = UIImage(data: data as! Data)
をコメントアウトして、私は私の文の「印刷(self.imageURL)」は正しく二VCのコンソールでURLが表示されていることを見ることができ、私の結果をテストしてみたときに
。また、コードに表示されていない名前などの同じオブジェクトの他の変数は、他のラベルによって正しく表示されます。
https://stackoverflow.com/questions/24643522/fatal-error-unexpectedly-found-nil-while-unwrapping-an-オプション - 値 – UghThatGuyAgain
私はそれが(データ:データとして!データ) 'を入力し、私の結果をテストすると、私のステートメント' print() self.imageURL) 'が2番目のVCのコンソールにURLを正しく表示しています。 – Rvfvl
ええ、私は本当にわからないスイフト、私はちょうど彼らの質問を停止しようとすることなく、他の記事と正しい方向に人々を指すのを助けるしようとする男です。 – UghThatGuyAgain