2017-01-26 11 views
0

Jsonオブジェクトからデータを取得した後にコンパイラがWebviewを作成しようとするたびに、プログラムがクラッシュする。これは、このエラーでクラッシュした:エラーでUIWebviewがクラッシュする:EXC_BREAKPOINT(CODE = EXC_I386_BPT、SUBCODE = 0X0)

EXC_BREAKPOINT (CODE=EXC_I386_BPT, SUBCODE = 0X0)

注:他のオブジェクト(UIlabelUIButtonUItextfield、など)は、プログラムがクラッシュすることなく、正常に作成された、唯一のUIWEBViewは、プログラムがクラッシュする原因となります。ここで

enter image description here

コードは次のとおりです。

getdata(){ (boolValue) ->() in 
     self.loadimg() 
     self.reloadInputViews() 
     SwiftLoading().hideLoading() 
    } 
} 

func loadimg() 
{ 
    for L in 0..<Basketpic.count{ 

     var webv = UIWebView() 
     let link = NSURL(string:Basketpic[L]) 
     let requestObj = NSURLRequest(url: link! as URL) as URLRequest 
     webv.loadRequest(requestObj) 
     webv.contentMode = .scaleToFill 
     webv.frame = CGRect(x: 280 , y:100 + (120 * L), width: 90, height: 100) 

     /*let webv = UIWebView() 
     let link = NSURL(string:Basketpic[L]) 
     let requestObj = NSURLRequest(url: link! as URL) as URLRequest 
     webv.loadRequest(requestObj) 
     webv.contentMode = .scaleToFill 
     webv.frame = CGRect(x: 280 , y:100 + (120 * L), width: 90, height: 100)*/ 

     /*let name = UILabel() 
     name.text = (BasketNames[L]) 
     name.contentMode = .scaleToFill 
     name.frame = CGRect(x: 140 , y: 100 + (120 * L), width: 150, height: 100) 

     let price = UILabel() 
     price.text = (String(BasketPrices[L])) 
     price.contentMode = .scaleToFill 
     price.frame = CGRect(x: 55 , y: 100 + (120 * L), width: 100, height: 100)*/ 

     // view.addSubview(name) 
     // view.addSubview(price) 
     // view.addSubview(webv) 
    } 

    /* let sum = BasketPrices.reduce(0, +) 
    let total = UILabel() 
    total.text = (String(sum)) 
    total.contentMode = .scaleToFill 
    let L = BasketPrices.count 
    total.frame = CGRect(x: 55 , y: 100 + (120 * L), width: 100, height: 100) 

    let totall = UILabel() 
    totall.text = ("المجموع الكلي") 
    totall.contentMode = .scaleToFill 
    totall.frame = CGRect(x: 155 , y: 100 + (120 * L), width: 100, height: 100) 

    view.addSubview(totall) 
    view.addSubview(total) */ 
} 

func getdata(completion: @escaping (_ result: Bool)->()) 
{ 
    let listUrlString = "http://burjuman.net/kkkls/basketreview.php" 
    let myUrl = URL(string: listUrlString); 
    var request = URLRequest(url:myUrl!) 
    request.httpMethod = "GET"; 

    let task = URLSession.shared.dataTask(with: request as URLRequest) { 
     data, response, error in 
     do { 
      let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:AnyObject] 
      if let result = json["result"] as? [[String: AnyObject]] { 
       for blog in result { 
        if let basket = blog["basket"] as? String { 
         if let id = blog["id"] as? String { 
          if let userid = blog["User_Id"] as? String { 
           if(userid == "75") 
           { 
            Basketpic.append(basket) 
            print(userid) 
            print(id) 
            print(basket) 
           } 
          } 
         } 
        } 
       } 
      } 
     } catch { 
      print("error serializing JSON: \(error)") 
     } 
     print(Basketpic) 
     completion (true) 
    } 
    task.resume() 
} 
+0

派遣試してみてくださいメインスレッドにUIを変更するもの。 –

答えて

0

要求した後、UI要素を表示するには、使用する必要があります。

を(Swift3で)

DispatchQueue.main.async { 
    /* What you want to display, update label, show webview */ 
} 
+0

ありがとうございました。 –

関連する問題