Почему я не могу получить доступ к своему файлу, несмотря на то, что он находится в ресурсах? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь открыть файл JSON в быстром CLI для его анализа. Однако, когда я не могу создать правильный 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 голосов
/ 01 апреля 2019

Попробуйте следующее.

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...