2017-09-03 37 views
0

IM真正的新迅速,沒有你們的幫助,我不能向前傢伙不匹配JSON數據和類之間,我已經取得了

有人可以告訴我,我該如何解決這個問題?

我把錯誤的圖像下面

import UIKit 
import Alamofire 
import SwiftyJSON 

class AppCategory : NSObject { 

    var name : String? 
    var apps : [App]? 
    var type : String? 



     override func setValue(_ value: Any?, forKey key: String) { 
      if key == "apps " { 
       var apps = [App]() 
       for dict in value as! [[String:AnyObject]] { 
        let app = App() 
        app.setValuesForKeys(dict) 
        apps.append(app) 
       } 

      }else{ 
       super.setValue(value, forKey: key) 
      } 
     } 
static func fetchFeaturedApps (completionHandler : @escaping ([AppCategory]) ->()) { 


     let urlRequest = URLRequest(url:URL(string: "http://www.statsallday.com/appstore/featured")!) 

      URLSession.shared.dataTask(with: urlRequest as URLRequest) { (data, response, error) -> Void in 

       if error != nil { 
        print(error!) 
        return 
       } 

       do { 
        let json = try(JSONSerialization.jsonObject(with: data!, options: .mutableContainers)) as! [String : Any] 

        var appCategories = [AppCategory]() 

        for dict in json["categories"] as! [[String:Any]]{ 
         let appcategory = AppCategory() 
         appcategory.setValuesForKeys(dict) 
         appCategories.append(appcategory) 
        } 
        DispatchQueue.main.async { 
         completionHandler(appCategories) 
        } 


       }catch let err { 
        print(err) 
       } 



      }.resume() 

     } 

這裏是我的類

class App : NSObject { 

    var Id : NSNumber? 
    var Name : String? 
    var ImageName : String? 
    var Category : String? 
    var Price : NSNumber? 

} 

the JSON link

這是應該回傳細胞,但給我的NSArray的失配一個機能的研究錯誤

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! AppCell 

      cell.apps = appCategory?.apps?[indexPath.item] 

     return cell 

    } 

我不知道如何findout哪些類型沒有第二個錯誤

支票字應用這一行if key == "apps " {除去空間

你應該使用符合

+0

請包括規範和相關信息到文本你的問題。 – OOPer

回答

0

for dict in json["categories"] as! [[String:Any]]{ 

    } 

//任何是任何數據類型的別名。 // AnyObject是任何派生自類的數據類型的別名。

但不如把它寫

guard let categories = json["categories"] as? [[String:Any]] else { 
     return 
    } 

    for dict in categories { 

    } 

enter image description here

+0

現在我得到這個錯誤:致命錯誤:NSArray元素無法匹配Swift數組元素類型 (lldb) –

+0

@michealwoods檢查上面的圖像,你會看到所有數據沒有任何問題,只是分享錯誤在哪裏 –

+0

我編輯我的文章現在它更清楚地感謝您的時間 –