我已经制作了Json数据和类之间的不匹配

时间:2017-09-03 07:44:25

标签: ios json swift swifty-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

    }

我不知道如何找出哪些类型不匹配

1 个答案:

答案 0 :(得分:0)

表示第二个错误

检查此行if key == "apps " {删除word应用中的空间

你应该使用这个

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

    }

// Any是任何数据类型的别名。   // AnyObject是从类派生的任何数据类型的别名。

但写得更好

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

    for dict in categories {

    }

enter image description here