私は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は私を助け機能ですこの問題で!
もっとコードを共有する必要があるかもしれません。あなたのUITableViewDelegateは、feedItemsが空であるかどうかをチェックしていますか(listTableViewにその変数を代入すると仮定しています) – markwatsonatx
私はこの問題を解決しました。クラッシュはダウンロード速度の低下によるものです。ダウンロードを管理していたスレッドがデリゲート関数のダウンロードを完了したときにTableViewのリストを作成しようとしましたが、ビューコントローラが隠されて起動していないためクラッシュしていませんでした。 私はnil値をチェックしたテーブルビューを更新する前に、View Controllerへのポインタを持つView Controllerの静的デリゲートを追加して解決しました。今は大丈夫です! –