Json 数据和我创建的类之间不匹配
Posted
技术标签:
【中文标题】Json 数据和我创建的类之间不匹配【英文标题】:Mismatch Between Json data And Classes i've made 【发布时间】:2017-09-03 07:44:25 【问题描述】:我真的是 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
我不知道如何找出不匹配的类型
【问题讨论】:
请将代码和相关信息以文本形式包含在您的问题中。 【参考方案1】:第二个错误
检查这一行 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
【讨论】:
现在我收到此错误:致命错误:NSArray 元素无法匹配 Swift 数组元素类型 (lldb) @michealwoods 检查上图你会看到所有数据没有任何问题,只需分享哪里出错 我编辑了我的帖子,现在更清楚了,感谢您的时间 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类不符合键价格的键值编码。”这是新错误 价格是双倍价格请确保您正确处理以上是关于Json 数据和我创建的类之间不匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 Web api 调用创建模型?
无法运行 Angular 站点,因为我的 angular.json 文件路径与 ng build 创建的不匹配