• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

Thread 1: signal SIGABRT 가 자꾸 뜨네요 천천히 차근차근 했는데...

19.09.09 16:52 작성 조회수 203

2

뷰 컨트롤에서 

import UIKit

import WebKit

class ViewController: UIViewController {

    // MARK: - Preperties

    // MARK: IBOutlets

    @IBOutlet var webView: WKWebView!

    @IBOutlet var activityIndicator: UIActivityIndicatorView!

    

    // MRAK: - Methods

    // MARK: Life Cycle

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.webView.navigationDelegate = self

    }

    

    override func viewDidAppear(_ animated: Bool) {

        super.viewDidAppear(animated)

        

        let firstPageURL: URL?

        

        if let lastURL: URL = UserDefaults.standard.url(forKey: lastPageURLDefualtkey) {

            firstPageURL = lastURL

        } else {

            firstPageURL = URL(string: "https://www.google.com")

        }

        

        guard let pageURL: URL = firstPageURL else {

            return

        }

        

        let urlRequest: URLRequest = URLRequest(url: pageURL)

        self.webView.load(urlRequest)

    }

    // MARK: IBAction

    @IBAction func goBeck(_ sender: UIBarButtonItem) {

        self.webView.goBack()

    }

    

    @IBAction func goForward(_ sender: UIBarButtonItem) {

        self.webView.goForward()

    }

    @IBAction func refresh(_ sender: UIBarButtonItem) {

        self.webView.reload()

    }

    

    //MARK: Custom Methods

    func showNetworkingIndicators() {

        self.activityIndicator.isHidden = false

        self.activityIndicator.startAnimating()

        UIApplication.shared.isNetworkActivityIndicatorVisible = true

    }

    

    func hideNetworkingIndicators() {

        self.activityIndicator.isHidden = true

        self.activityIndicator.stopAnimating()

        UIApplication.shared.isNetworkActivityIndicatorVisible = false

    }

}

extension ViewController: WKNavigationDelegate {

    

    //MARK: WKNavigationDelegate

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

        print("did finish navigation")

        

        if let appDelegate: AppDelegate = UIApplication.shared.delegate as? AppDelegate {

            appDelegate.lastPageURL = webView.url

        }

        webView.evaluateJavaScript("document.title") { (value: Any?, error: Error?) in

            if let error: Error = error {

                print(error.localizedDescription)

                return

            }

            

            guard let title: String = value as? String else {

                return

            }

            

            self.navigationItem.title = title

        }

        self.hideNetworkingIndicators()

    }

    

    func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {

        print("did fail navigation")

        print("\(error.localizedDescription)")

        

        self.hideNetworkingIndicators()

        let message: String = "오류발생!\n" + error.localizedDescription

        

        let alert: UIAlertController

        alert = UIAlertController(title: "알림", message: message, preferredStyle: UIAlertController.Style.alert)

        

        let okayAction: UIAlertAction

        okayAction = UIAlertAction(title: "확인", style: UIAlertAction.Style.cancel, handler: nil)

        

        alert.addAction(okayAction)

        

        self.present(alert, animated: true, completion: nil)

    }

    

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {

        print("did start navigation")

        self.showNetworkingIndicators()

    }

}

앱딜리게이트에서 

import UIKit

/// 마지막 페이지 주소를 UserDefaults에서 관리하기 귀한 키 값

let lastPageURLDefualtkey: String = "lastURL"

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

    

    // MARK: - Properties

    var window: UIWindow?

    var lastPageURL: URL?

    

    

    // MRAK: - Methods

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        

        self.lastPageURL = UserDefaults.standard.url(forKey: lastPageURLDefualtkey)

        return true

    }

    func applicationWillResignActive(_ application: UIApplication) {

        // 응용 프로그램이 활성 상태에서 비활성 상태로 이동하려고 할 때 전송됩니다. 이는 특정 유형의 일시적인 중단 (예 : 전화 또는 SMS 메시지 수신) 또는 사용자가 응용 프로그램을 종료하고 백그라운드 상태로 전환하기 시작할 때 발생할 수 있습니다.

        //이 방법을 사용하여 진행중인 작업을 일시 중지하고 타이머를 비활성화하고 그래픽 렌더링 콜백을 무효화합니다. 게임은이 방법을 사용하여 게임을 일시 중지해야합니다.

        let userDefaults: UserDefaults

        userDefaults = UserDefaults.standard

        

        userDefaults.set(self.lastPageURL, forKey: lastPageURLDefualtkey)

        userDefaults.synchronize()

    }

 코드를 적었는데요 

빌드를 실행하게 되면 앱딜리게이트 첫부분 

class AppDelegate: UIResponder, UIApplicationDelegate {Thread 1: signal SIGABRT  A가 걸리네요  레이아웃 연결 제대로 연결했는데 스레드 걸리니깐 무엇이 문제인지 모르겠습니다... 

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!