如何为watchOS 6独立应用程序设计并发症?

时间:2020-06-24 11:30:04

标签: swift firebase swiftui watchos apple-watch-complication

我在watchOS 6上有一个独立的应用程序,在我的应用程序中,我正在使用Firestore REST API使用URLSession向用户显示数据。

由于Cloud Firestore REST API返回JSON字符串,因此为了处理数据,我创建了嵌套结构。示例:要访问特定响应中的“标题”,我需要执行以下操作:response.mapValue.fields.title.stringValue。 该应用目前可以正常运行。从长远来看,我计划将URLSessions创建为后台任务。现在,每次在数据的URLSession视图上使用.onAppear(functionToUseURLSession())来渲染视图时,我都会调用List

现在,我要实现的下一件事是此特定应用程序的复杂性。 我是Swift和SwiftUI的新手,入门最困难。我在线上经历的所有教程都使用WKExtensionDelegate来获取并发症的数据模型。 但就我而言,我什至没有数据模型!我只是有一些结构以嵌套的方式调用其他结构,以便处理从API调用获得的JSON响应。

任何帮助我了解这一点的帮助都将受到赞赏!

以下代码可以更好地了解App的结构:

struct Firebase: Codable {
    var name: String?
    var createTime, updateTime: String?
    var fields: FirebaseFields
}

现在,FirebaseFields也是另一个结构:

struct FirebaseFields: Codable {
    var emailID, lastName, firstName: String?
    var goalsRoutines: GoalsRoutines

    enum CodingKeys: String, CodingKey {
        case emailID = "email_id"
        case lastName = "last_name"
        case firstName = "first_name"
    }
}

类似地,GoalsRoutines也是一个结构...

如上所述,我使这些结构遵循Firebase API响应的JSON对象的确切结构。因此,我访问如下字段:Firebase.FirebaseFields.GoalsAndRoutines.whatever.is.my.firebase.schema

我的GoalsView.swift是:

var body: some View {
    List{
        ...
        ...
    }.onAppear{
        FirebaseServices.getFirebaseData() {
         (data) in self.data = data   
        }
    }
}

最后,在FirebaseServices.swift中,func getFirebaseData是:

func getFirebaseData(completion: @escaping ([Value]) -> ()) {
    guard let url = URL(string: "FIRESTORE URL HERE") else { return }
    URLSession.shared.dataTask(with: url) { (data, _, _) in
        let data = try! JSONDecoder().decode(Firebase.self, from: data!)
        DispatchQueue.main.async {
            completion(data.fields.goalsRoutines.arrayValue.values)
        }
    }.resume()
}

这就是我目前如何获取数据并将其显示在应用程序上的方法。

我真的不知道如何在并发症中做同样的事情。

我们非常感谢您的帮助。

0 个答案:

没有答案