尝试通过 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 应用程序以在一个屏幕上接收用户的输入并在另一个屏幕上显示这些图像