Vo0ne
@Vo0ne
work hard

Как сделать историю поиска(детали внутри)?

Здравствуйте,
есть две вьюхи: первая для поиска по названию, вторая - отображает результат с постером и инфо о фильме.
Третий контроллер это ТablView где должны отображаться фильмы которые уже искались и при таппе на фильм из списка переходить на екран с его инфой.(второй контроллер)
Пытался создать массив елементов внутри модели Movie но при добавлении елемента нвого он перезаписывался.
Можно как то сюда прикрутить Realm?

import Foundation
import UIKit
import Alamofire
import AlamofireImage


protocol MovieDelegate {
    func updateMovieInfo()
}

class Movie {
   private let omdbUrl = "http://www.omdbapi.com/?"
    var title: String?
    var filmYear: String?
    var poster: String?

   var delegete: MovieDelegate!

    var historyMovie = [Movie]()



    func getMovieInfo(title: String, completion: @escaping ()->()){
        let params = ["t": title]
        Alamofire.request(omdbUrl, method: .get, parameters: params).validate(statusCode: 200..<300).validate(contentType: ["application/json"]).responseJSON { (response) in
            switch response.result {
            case .success(let JSON):
                let response = JSON as! NSDictionary
                let status = response["Response"] as! String
                if status == "True" {
                    self.title = (response["Title"] as! String)
                    self.filmYear = (response["Year"] as! String)
                    self.poster = (response["Year"] as! String)
                  //  self.delegete.updateMovieInfo()
                    completion()
                } else {
                    self.title = (response["Error"] as! String)
                    completion()
                }
            case .failure(let error):
                print (error)

            }
        }
        
    }

}


//
//  SearchFilmInfo.swift
//  OMDb Picker
//
//  Created by Volodymyr Lavryk on 18.04.17.
//  Copyright © 2017 Volodymyr Lavryk. All rights reserved.
//

import Foundation
import UIKit
import Alamofire
import AlamofireImage


protocol MovieDelegate {
    func updateMovieInfo()
}

class Movie {
   private let omdbUrl = "http://www.omdbapi.com/?"
    var title: String?
    var filmYear: String?
    var poster: String?

   var delegete: MovieDelegate!

    var historyMovie = [Movie]()



    func getMovieInfo(title: String, completion: @escaping ()->()){
        let params = ["t": title]
        Alamofire.request(omdbUrl, method: .get, parameters: params).validate(statusCode: 200..<300).validate(contentType: ["application/json"]).responseJSON { (response) in
            switch response.result {
            case .success(let JSON):
                let response = JSON as! NSDictionary
                let status = response["Response"] as! String
                if status == "True" {
                    self.title = (response["Title"] as! String)
                    self.filmYear = (response["Year"] as! String)
                    self.poster = (response["Year"] as! String)
                  //  self.delegete.updateMovieInfo()
                    completion()
                } else {
                    self.title = (response["Error"] as! String)
                    completion()
                }
            case .failure(let error):
                print (error)

            }
        }
        
    }

}


import UIKit

class DetailInfoViewController: UIViewController, MovieDelegate {

    @IBAction func showHistory(_ sender: UIButton) {
        performSegue(withIdentifier: "showHistory", sender: self)
    }
    @IBOutlet weak var posterImageView: UIImageView!
    @IBOutlet weak var filmNameLabel: UILabel!
    @IBOutlet weak var filmYearLabel: UILabel!
    var movie = Movie()
    var movieTitle = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        self.movie.getMovieInfo(title: movieTitle ) {
            self.updateMovieInfo()
        }
        self.movie.delegete = self
    }

    func updateMovieInfo() {
        getPoster(link: movie.poster)
        filmNameLabel.text = movie.title
        filmYearLabel.text = movie.filmYear
    }

    func getPoster(link: String?) {
        if link != nil {
            guard let url = URL(string: link!) else { return }
            DispatchQueue.global().async {
                if let data = try? Data(contentsOf: url) {
                    DispatchQueue.main.async {
                        self.posterImageView.image = UIImage(data: data)
                    }
                }
            }        } else {
            self.posterImageView.image = #imageLiteral(resourceName: "Image")
        }
        
    }
}
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы