为什么我的文件不在资源中,但为什么仍无法访问?

时间:2019-03-31 23:51:39

标签: json swift xcode file

我试图在swift CLI中打开JSON文件以对其进行解析。 但是,尽管文件位于资源中,但我似乎无法生成正确的文件URL。

if let path = Bundle.main.path(forResource: "test", ofType: "json") {
    do {
        let fileUrl = URL(fileURLWithPath: path)
        print(fileUrl)
        let data = try Data(contentsOf: fileUrl, options: .mappedIfSafe)
        print(data)
        let cities: [City] = try decoder.decode([City].self, from: data);
        return cities;
    } catch {
        return nil;
    }
}

如果打开“构建阶段”菜单,则可以看到其中的test.json文件,但是在构建时swift无法访问该文件。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试以下操作。

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        readData()
    }

    // MARK: - More
    func readData() {
        if let path = Bundle.main.path(forResource: "test", ofType: "json") {
            if let jsonData = readFileContent(path: path) {
                do {
                    let result = try JSONDecoder().decode([City].self, from: jsonData)
                    print(result)
                } catch let error as NSError {
                    print("\(error)")
                }
            }
        }
    }

    func readFileContent(path: String) -> Data? {
        do {
            let url = URL(fileURLWithPath: path)
            let data = try Data(contentsOf: url)
            return data
        } catch let error as NSError {
            print("Error: \(error)")
        }
        return nil
    }
}