2016-04-24 13 views
0

私はJSONとして結果をエンコードするPHPサービスからの1つのMySQLクエリからいくつかの結果を表示している簡単なナビゲーションコントローラアプリケーションを持っています。 私の問題は、要求が1つのView Controller内で開始され、完了していない場合(通常、エッジなどの低速イン​​ターネット接続で)、ユーザーが戻ってリクエストがアプリクラッシュを終了した場合です。iOS Appクラッシュ、変更ビューで遅いインターネット接続

これは盗聴関数内で呼び出されるデリゲート関数です:

func itemsDownloaded(items: NSArray) { 
    feedItems = items 
    self.listTableView.reloadData() 
    if(feedItems.count == 0){ 
     alertNoResults(self) 
    } 
} 

これはアプリの

func parseJSON() { 

    var jsonResult: NSMutableArray = NSMutableArray() 

    do{ 
     /* Parse with error control */ 
     if let jsonObject: AnyObject = try NSJSONSerialization.JSONObjectWithData(self.data, options:NSJSONReadingOptions.AllowFragments) { 
      if let mutablearray = jsonObject as? NSMutableArray { 
       /* there are results */ 
       jsonResult = mutablearray 
      } else { 
       /* there are nothing to show */ 
      } 
     } else { 
      /* parse error */ 
     } 
     /* Parse senza controllo errori */ 

    } catch let error as NSError { 
     print(error) 

    } 

    var jsonElement: NSDictionary = NSDictionary() 
    let locations: NSMutableArray = NSMutableArray() 

    for i in 0 ..< jsonResult.count{ 
     jsonElement = jsonResult[i] as! NSDictionary 

     let categoria = OTestCatModel() 

     //questo controllo si assicura che nessuno dei risultati abbia valore nullo 
     if let id = jsonElement["id_cat"] as? String, 
      let nome = jsonElement["categoria"] as? String 
     { 
      /* Controllo che i campi siano not null */ 
      if id != ""{ 
       categoria.id = id 
      } else{ 
       categoria.id = "0" 
      } 
      if nome != ""{ 
       categoria.nome = nome 
      }else{ 
       categoria.nome = "-" 
      } 
     } 

     locations.addObject(categoria) 

    } 

    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     /* Here is the crash */ 
     self.delegate.itemsDownloaded(locations) 

    }) 
} 

This is the app problem screenshot

は私が把握することはできませんplsは私を助け機能ですこの問題で!

+0

もっとコードを共有する必要があるかもしれません。あなたのUITableViewDelegateは、feedItemsが空であるかどうかをチェックしていますか(listTableViewにその変数を代入すると仮定しています) – markwatsonatx

+0

私はこの問題を解決しました。クラッシュはダウンロード速度の低下によるものです。ダウンロードを管理していたスレッドがデリゲート関数のダウンロードを完了したときにTableViewのリストを作成しようとしましたが、ビューコントローラが隠されて起動していないためクラッシュしていませんでした。 私はnil値をチェックしたテーブルビューを更新する前に、View Controllerへのポインタを持つView Controllerの静的デリゲートを追加して解決しました。今は大丈夫です! –

答えて

0

私はこの問題を解決しました。クラッシュはダウンロード速度の低下によるものです。ダウンロードを管理していたスレッドがデリゲート関数のダウンロードを完了したときにTableViewのリストを作成しようとしましたが、ビューコントローラが隠されて起動していないためクラッシュしていませんでした。私はnil値をチェックしたテーブルビューを更新する前に、View Controllerへのポインタを持つView Controllerの静的デリゲートを追加して解決しました。今は大丈夫です!

関連する問題