您的问题是,您强制拆开值,并且在发生错误的情况下无法知道其来源。
相反,您应该处理错误并安全地打开可选组件。
正如@vadian在他的评论中正确指出的那样,您应该使用
Bundle.main.url。
private func readJson() { do { if let file = Bundle.main.url(forResource: "points", withExtension: "json") { let data = try Data(contentsOf: file) let json = try JSONSerialization.jsonObject(with: data, options: []) if let object = json as? [String: Any] { // json is a dictionary print(object) } else if let object = json as? [Any] { // json is an array print(object) } else { print("JSON is invalid") } } else { print("no file") } } catch { print(error.localizedDescription) }}在Swift中进行编码时,通常
!是一种代码味道。当然也有例外(IBOutlets和其他),但请尽量不要对
!自己使用强制展开,而要始终安全地展开。



