【问题标题】:json on SwiftUI with Xcode 11.3使用 Xcode 11.3 在 Swift 中创建 json
【发布时间】:2020-05-25 12:57:05
【问题描述】:

我是 Swift 新手 需要帮忙 我应该在应用程序中使用 json 输出数据。 如果 date = date 那么它应该在同一日期输出。

import SwiftUI

结构内容视图:查看{

var salatTimes: [SalatTime] = []
//timer
static let taskDateFormat: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateStyle = .medium
  //formatter.timeStyle = .medium
    return formatter

}()

var dueDate = Date()
//datum vergleich
@State private var salatT = taskDateFormat

//ende Timer
var body: some View {

    NavigationView {

    VStack {

        Text("Datum: \(dueDate, formatter: Self.taskDateFormat)")

        List(salatTimes) { item in
                Image(item.imageName)
                    .colorInvert()
                Text(item.nameSalat)
                    Spacer()
                Text(item.timeSalat)
                .padding()
        }.padding()
    }

    }.navigationViewStyle(StackNavigationViewStyle())

}

}

struct ContentView_Previews: PreviewProvider { 静态变量预览:一些视图 { ContentView(salatTimes: SalatApp) } }

/**********/

struct SalatTime: Identifiable, Decodable {
var id = UUID()
var nameSalat: String
var timeSalat: String

var imageName: String { return nameSalat }

}

/************/ json数据

{
"times": [
    {
        "date": "2020-01-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },      
    {
        "date": "2020-02-02",
        "fajr": "4:59 AM",
        "sunrise": "6:17 AM",
        "dhuhr": "11:47 AM",
        "asr": "2:56 PM",
        "maghrib": "5:18 PM",
        "isha": "6:48 PM"
    },  
    {
        "date": "2020-03-02",
        "fajr": "4:41 AM",
        "sunrise": "5:57 AM",
        "dhuhr": "11:46 AM",
        "asr": "3:07 PM",
        "maghrib": "5:36 PM",
        "isha": "7:06 PM"
    },  
    {
        "date": "2020-04-02",
        "fajr": "4:08 AM",
        "sunrise": "5:25 AM",
        "dhuhr": "11:38 AM",
        "asr": "3:07 PM",
        "maghrib": "5:51 PM",
        "isha": "7:21 PM"
    },
    {
        "date": "2020-05-02",
        "fajr": "3:36 AM",
        "sunrise": "4:58 AM",
        "dhuhr": "11:31 AM",
        "asr": "3:00 PM",
        "maghrib": "6:05 PM",
        "isha": "7:35 PM"
    },
    {
        "date": "2020-06-02",
        "fajr": "3:15 AM",
        "sunrise": "4:43 AM",
        "dhuhr": "11:32 AM",
        "asr": "2:56 PM",
        "maghrib": "6:20 PM",
        "isha": "7:50 PM"
    },
    {
        "date": "2020-07-02",
        "fajr": "3:18 AM",
        "sunrise": "4:47 AM",
        "dhuhr": "11:38 AM",
        "asr": "3:01 PM",
        "maghrib": "6:28 PM",
        "isha": "7:58 PM"
    },
    {
        "date": "2020-08-02",
        "fajr": "3:37 AM",
        "sunrise": "5:01 AM",
        "dhuhr": "11:40 AM",
        "asr": "3:07 PM",
        "maghrib": "6:19 PM",
        "isha": "7:49 PM"
    },
    {
        "date": "2020-09-02",
        "fajr": "3:56 AM",
        "sunrise": "5:15 AM",
        "dhuhr": "11:34 AM",
        "asr": "3:03 PM",
        "maghrib": "5:53 PM",
        "isha": "7:23 PM"
    },
    {
        "date": "2020-10-02",
        "fajr": "4:10 AM",
        "sunrise": "5:26 AM",
        "dhuhr": "11:23 AM",
        "asr": "2:47 PM",
        "maghrib": "5:20 PM",
        "isha": "6:50 PM"
    },
    {
        "date": "2020-11-02",
        "fajr": "4:24 AM",
        "sunrise": "5:42 AM",
        "dhuhr": "11:17 AM",
        "asr": "2:29 PM",
        "maghrib": "4:53 PM",
        "isha": "6:23 PM"
    },
    {
        "date": "2020-12-02",
        "fajr": "4:42 AM",
        "sunrise": "6:03 AM",
        "dhuhr": "11:23 AM",
        "asr": "2:23 PM",
        "maghrib": "4:43 PM",
        "isha": "6:13 PM"
    },
    {
        "date": "2020-13-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-14-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-15-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-16-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-17-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-18-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
    {
        "date": "2020-19-02",
        "fajr": "4:58 AM",
        "sunrise": "6:19 AM",
        "dhuhr": "11:37 AM",
        "asr": "2:35 PM",
        "maghrib": "4:55 PM",
        "isha": "6:25 PM"
    },
]

}

请帮忙

谢谢

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    你的开始是错误的。

    当您的真正问题是解析 JSON 文档中的文本并将其正确解释为日期时,您正试图直接显示。

    您要做的第一件事是创建一个 模型对象,它代表 JSON 数据中的 一个 数组元素,重要的是 以最合适的方式为您的应用程序。不是在 JSON 文档中找到的方式。然后编写代码,用 JSON 数据的一个数组元素初始化模型对象。

    一旦工作正常并经过全面测试,然后您就可以开始使用您的 UI。日期转换函数应该是模型对象的一部分。

    如需加分,请问问自己您的代码是否可以在夏天在摩尔曼斯克工作。摩尔曼斯克位于北极圈以北。这意味着例如日落可以在凌晨 0:05。

    【讨论】:

      【解决方案2】:

      大家好,我在一些朋友的帮助下找到了以下解决方案。我在这里发布我的代码,并希望我可以帮助某人解决这个问题。 第一部分:

      extension Formatter {
      static let month: DateFormatter = {
          let formatter = DateFormatter()
          formatter.dateFormat = "MM"
          return formatter
      }()
      static let day: DateFormatter = {
          let formatter = DateFormatter()
          formatter.dateFormat = "dd"
          return formatter
      }()
      
      static let amPM: DateFormatter = {
          let formatter = DateFormatter()
          formatter.dateFormat = "a"
          return formatter
      }()
      }
      
      extension Date {
          var month: String  { return Formatter.month.string(from: self) }
          var day:  String      { return Formatter.day.string(from: self) }
          var amPM: String         { return Formatter.amPM.string(from: self) }
      }
      

      第二部分:

      import SwiftUI
      
      struct ContentView: View {
          let prayTimes = Bundle.main.decode("time.json") 
      
      var body: some View {
      
          GeometryReader { geometry in
                     ZStack {
                         Image("background")
                             .resizable()
                             .aspectRatio(geometry.size, contentMode: .fill)
                          .edgesIgnoringSafeArea(.all)
      
                      ZStack{
      
                          timeView(self.prayTimes).padding()
      
      
                      }
                  }
              }
          }
      
      }
      
      
      struct ContentView_Previews: PreviewProvider {
          static var previews: some View {
              ContentView()
          }
      }
      
      
      
      struct ourView: View {
          var item: PrayTime
      
        var body: some View {
          VStack{
      
      
      HStack{
          Text("Fajr").font(.body)
          Spacer()
          Text("\(item.fajr)")
          Image(systemName: "speaker").padding()
          }.padding()
      
      HStack{
          Text("Sunrise").font(.body)
          Spacer()
          Text(item.sunrise)
          Image(systemName: "circle").padding()
          }.padding()
      
      HStack{
          Text("Dhuhr").font(.body)
          Spacer()
          Text(item.dhuhr)
          Image(systemName: "speaker").padding()
          }.padding()
      
      HStack{
          Text("Asr").font(.body)
          Spacer()
          Text(item.asr)
          Image(systemName: "speaker").padding()
          }.padding()
      
      HStack{
          Text("Maghrib").font(.body)
          Spacer()
          Text(item.maghrib)
          Image(systemName: "speaker").padding()
          }.padding()
      
          HStack{
              Text("Isha").font(.body)
              Spacer()
              Text(item.isha)
              Image(systemName: "speaker").padding()
              }.padding()
      
      }.foregroundColor(Color.white).background(Rectangle().opacity(0.5))
      
      
      }
      }
      
      struct Countries: Decodable {
            let name: String
            let capital: String
      
        }
      
      
      func timeView(_ items: [PrayTime]) -> AnyView {
       let date = Date()
          let day = date.day + "-" + date.month
      
      for item in items{
          if (item.id == day) {
              return(AnyView(ourView(item: item)))
          }
      }
      return AnyView(Text("Nothing Found. Please update to resolve."))
      }
      

      【讨论】:

        猜你喜欢
        • 2020-04-28
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-13
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多