尝试通过 JSON 解析以在应用程序中显示图像

Posted

技术标签:

【中文标题】尝试通过 JSON 解析以在应用程序中显示图像【英文标题】:Trying to parse through a JSON to display images in app 【发布时间】:2017-10-10 18:55:14 【问题描述】:

我相信我已经将问题范围缩小到以下代码的某处我提供了一个不应该存在的条件。但是由于某种原因,当我运行该应用程序时,它会下降到 self.motorbikes 线。使用线程 1:EXC_BAD_INSTRUCTION 错误。

(请看图)

会不会是我的 DataSource.swift 文件没有连接到我的 motorbikes.json 文件?

我正在尝试完全以编程方式构建它,因此不使用情节提要对我来说很困难。如果有人可以提供帮助,我将不胜感激。

import Foundation

class MotorbikeDataSource 

fileprivate var motorbikes: [Motorbike]?

init() 
    self.loadMotorbikes()


public func allMotorbikes() -> [Motorbike]? 
    return self.motorbikes




extension MotorbikeDataSource 

fileprivate func loadMotorbikes() 

    guard let path = Bundle.main.path(forResource: "motorbikes", ofType: "json") else 
        assert(false, "Could not find motorbikes file")
        return
    


    guard let contents = NSData(contentsOfFile: path) as Data? else 
        assert(false, "Could not load motorbikes file: \(path)")
        return
    

    self.motorbikes = [Motorbike]()
    do 
        if let jsonDict = try JSONSerialization.jsonObject(with: contents, options: []) as? Dictionary<String, Any> 
            if let motorbikes = jsonDict["motorbikes"] as? Array<Dictionary<String, Any>> 
                for motorbikeDict in motorbikes 
                    if let motorbike = Motorbike(dict: motorbikeDict) 
                        self.motorbikes?.append(motorbike)
                    
                
            
        
     catch 
        assert(false, "Could not parse motorbikes file: \(path)")
        return
    

【问题讨论】:

日志中有什么?它是关于 nil 的吗? 你对摩托车做的第一件事就是初始化它,试着把它作为一个 [Motorbike]() 启动它 【参考方案1】:

我有这种偷偷摸摸的怀疑,这是因为该对象仍在初始化程序调用堆栈中。也许让loadMotorbikes() 函数返回Motorbike 对象的列表并在初始化程序中分配它?这样做的另一个好处是,您可以将 Motorbike 对象列表设为 let 常量。

【讨论】:

以上是关于尝试通过 JSON 解析以在应用程序中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSON 中循环数组 imageURL 以在图像视图中显示

如何将图像转换为通知图标以在 Android 应用程序中使用?

创建一个 kivy 应用程序以在一个屏幕上接收用户的输入并在另一个屏幕上显示这些图像

如何通过在iOS中进行JSON Pasing一次在tableview上显示不同的图像?

解析 JSON 文件以在 JavaScript 中使用

iOS 中 JSON 解析中的 TableView 中未显示图像