ios - Json 数据和我所做的类不匹配

标签 ios json swift swifty-json

我对 Swift 还很陌生,没有你们的帮助我就无法前进

有人可以告诉我如何修复这个错误吗?

我把错误的图片放在下面

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

    }

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

最佳答案

第二个错误

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

你应该使用这个

 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

关于ios - Json 数据和我所做的类不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021301/

相关文章:

python - 访问嵌套字典 python 中的键

ios - swift |强制取消执行代码

ios - 通过 sqlite 数据库使用搜索栏

iphone - 即使在调用 commitAnimation 之后,动画也会影响每个 View

python - 如何使用 Python Jenkins API 在 Jenkins 中查找和查询特定构建

php - MYSQL 忽略相似但不相同数据的更新命令

json - 使用 Decodable 解析 JSON

ios - NSFileManager - Swift - 文件浏览器

ios - UITextView _firstBaselineOffsetFromTop 断言失败

ios - 有1000位用户的TestFlight