Xcode Server简单介绍(二) —— Xcode Server的安装和配置(二)

  • 时间:2025-11-06 18:21 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:版本记录 版本号 时间 V1.0 2020.11.12 星期四 前言 Continuous Integration (CI)可以让你的开发流程更加的迅速,并具有持续性,下面我们就一起学习下如何使用Xcode Server。感兴趣的可以看下面几篇文章。 1. Xcode Server简单介绍(一) —— Xcode Server的安装和配置(一) 源码 1. Swift 第一

版本记录

版本号 时间
V1.0 2020.11.12 星期四

前言

Continuous Integration (CI)可以让你的开发流程更加的迅速,并具有持续性,下面我们就一起学习下如何使用Xcode Server。感兴趣的可以看下面几篇文章。
1. Xcode Server简单介绍(一) —— Xcode Server的安装和配置(一)

源码

1. Swift

第一看下工程组织结构

Xcode Server简单介绍(二) —— Xcode Server的安装和配置(二)

下面就是源码啦

1. SceneDelegate.swift

import SwiftUI

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
  var window: UIWindow?

  func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    if let windowScene = scene as? UIWindowScene {
      let window = UIWindow(windowScene: windowScene)
      window.rootViewController = UIHostingController(rootView: ContentView())
      self.window = window
      window.makeKeyAndVisible()
    }
  }
}

2. ContentView.swift

import SwiftUI

struct FruitRow: View {
    let fruit: Fruit

    var body: some View {
        Text(fruit.name)
    }
}

struct ContentView: View {
    @ObservedObject var viewModel = FruitListViewModel()

  var body: some View {
    NavigationView {
      List(viewModel.fruits) { fruit in
        FruitRow(fruit: fruit)
      }
      .onAppear {
        viewModel.loadFruits()
      }
      .navigationBarTitle("Fruits")
    }.navigationViewStyle(StackNavigationViewStyle())
  }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
}
#endif

3. Fruit.swift

import Foundation

struct Fruit: Identifiable, Decodable {
    let name: String
    let id = UUID()

    private enum CodingKeys: String, CodingKey {
        case name
    }

    init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        name = try container.decode(String.self, forKey: .name)
    }
}

4. FruitListViewModel.swift

import Foundation

class FruitListViewModel: ObservableObject {
    @Published private(set) var fruits: [Fruit] = []

    func loadFruits() {
        fruits = loadJson(filename: "mock")
    }

    private func loadJson(filename fileName: String) -> [Fruit] {
        if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {
            do {
                let data = try Data(contentsOf: url)
                let decoder = JSONDecoder()
                let jsonData = try decoder.decode([Fruit].self, from: data)
                return jsonData
            } catch {
                print("Error getting JSON:(error)")
            }
        }
        return []
    }
}

后记

本篇主要讲述了Xcode Server的安装和配置,感兴趣的给个赞或者关注~~~

Xcode Server简单介绍(二) —— Xcode Server的安装和配置(二)

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】web前端培训:6个常用的前端开发构建工具(2025-11-06 22:33)
【系统环境|】现代包管理器pnpm 、npm、yarn?(2025-11-06 22:32)
【系统环境|】一款无需写任何代码即可一键生成前后端代码的开源工具(2025-11-06 22:32)
【系统环境|】提示工程架构师教你借助Agentic AI提升社交媒体用户留存率(2025-11-06 22:31)
【系统环境|】电子元器件-逻辑器件篇:逻辑电平、CMOS逻辑、手册解读、逻辑电平转换,应用注意事项(2025-11-06 22:31)
【系统环境|】Linux基础-包管理工具yum和apt对比(2025-11-06 22:30)
【系统环境|】RPM包离线下载方法(2025-11-06 22:30)
【系统环境|】红帽linux系统与UOS命令对比(2025-11-06 22:29)
【系统环境|】从 MIB 到告警:手把手教你用 Prometheus 监控交换机端口(2025-11-06 22:29)
【系统环境|】GitLab 13.12发布,安全性、可用性和管道管理加强(2025-11-06 22:28)
手机二维码手机访问领取大礼包
返回顶部