前提・実現したいこと
Swiftで以下のようなContactの構造体作成して、APIから返ってくるcontactをデコードして値をTextに表示する方法がわかりません。
JSONは以下のようになっております。API通信の部分はAlamofireを使っております。
{ "contact": { "id": 1, "name": "テスト太郎", "email": "test@example.com", "message": "メッセージです。", "deleted_at": null, "created_at": "2021-08-01T11:15:31.184+09:00", "updated_at": "2021-08-01T11:15:31.184+09:00" } }
SwiftUIの部分は以下のようになっております。
struct Contact: Decodable, Identifiable, Encodable { var id: Int var name: String var email: String var message: String var deleted_at: String? var created_at: String var updated_at: String } class ContactFetcher: ObservableObject { @Published var contactData: Contact init() { fetchContactData() } # ここで以下のような2つのエラーが表示されてしまいます。 'self' used in method call 'fetchContactData' before all stored properties are initialized Return from initializer without initializing all stored properties func fetchContactData() { AF.request("http://127.0.0.1:3000/api/contacts/1.json", method: .get, encoding: URLEncoding.default).response { response in guard let json = response.data else { return } let decoder: JSONDecoder = JSONDecoder() do { let searchedResultData = try? decoder.decode(Contact.self, from: json) DispatchQueue.main.async { self.contactData = searchedResultData } } catch { print("json convert failed in JSONDecoder. " + error.localizedDescription) } debugPrint(response) } } } struct ContentView: View { @ObservedObject var fetcher = ContactFetcher() var body: some View { VStack { Text("(fetcher.contactData.email)") # このように表示したい } } }
以下のエラーの解消方法が分かりません。
'self' used in method call 'fetchContactData' before all stored properties are initialized Return from initializer without initializing all stored properties
是非アドバイスなどよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 01:40 編集