Справочный ресурс в SwiftUI - PullRequest
       0

Справочный ресурс в SwiftUI

0 голосов
/ 07 апреля 2020

Я пытаюсь сослаться на список JSON в группе ресурсов из представления SwiftUI, но по какой-то причине он не будет работать. Вот код в ContentView.swift:

import SwiftUI

struct ContentView: View {
    var kitten : Kitten
    let stuff = ["this","that","these"]
    @State private var i = 0
    var body: some View {
        VStack{
            Text("Placeholder")
            Button(action: {
                self.i = (self.i+1)%3
            // Do something
            }) {
                Text(stuff[i])
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(kitten:kittens[0])
    }
}

, и моя структура каталогов выглядит следующим образом:

Project\
  AppleDelegate.swift
  SceneDelegateView.swift
  ContentView.swift
  Models\
    Kitten.swift
  Resources\
    kittens.json

вместе с остальными компонентами. Я думал, что если бы у меня были котята. json в группе Ресурсы, я мог бы сослаться на это в файле ContentView.swift, нет?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Лучший способ обработать файлы json - добавить их в свои активы в виде набора данных:

1 - открыть свой файл Assets.xcassets.

2 - создать Новый набор данных и присвойте ему имя, например «котята» enter image description here

3- Перетащите файл json в этот новый набор данных

4- Вы можете получить доступ к своим данным, как это:

guard let assets = NSDataAsset(name: "kittens") else {
      print("Missing data asset: kittens")
}
let kittens = try! JSONDecoder().decode([kitten].self, from: assets.data)
0 голосов
/ 07 апреля 2020

Нет, вы должны загрузить его явно, используя Bundle, как показано ниже

String(contentsOf: Bundle.main.url(forResource: stuff[i], withExtension: "json"))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...