MovieSwiftUI 项目教程

MovieSwiftUI 项目教程

MovieSwiftUISwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.项目地址:https://gitcode.com/gh_mirrors/mo/MovieSwiftUI

1. 项目的目录结构及介绍

MovieSwiftUI 项目的目录结构如下:

MovieSwiftUI/
├── MovieSwiftUI/
│   ├── Model/
│   ├── View/
│   ├── ViewModel/
│   ├── App/
│   ├── Resources/
│   ├── Utils/
│   ├── Services/
│   ├── AppDelegate.swift
│   ├── SceneDelegate.swift
│   ├── Info.plist
│   └── MovieSwiftUIApp.swift
├── MovieSwiftUI.xcodeproj
├── MovieSwiftUI.xcworkspace
├── README.md
├── LICENSE
└── .gitignore

目录介绍:

  • Model/: 存放数据模型文件,如 Movie.swift
  • View/: 存放视图文件,如 MovieListView.swift
  • ViewModel/: 存放视图模型文件,如 MovieListViewModel.swift
  • App/: 存放应用级别的文件,如 AppState.swift
  • Resources/: 存放资源文件,如图片、字体等。
  • Utils/: 存放工具类文件,如 Extensions.swift
  • Services/: 存放服务类文件,如 MovieService.swift
  • AppDelegate.swift: 应用的入口文件之一。
  • SceneDelegate.swift: 应用的入口文件之一。
  • Info.plist: 应用的配置文件。
  • MovieSwiftUIApp.swift: 应用的主入口文件。

2. 项目的启动文件介绍

AppDelegate.swift

AppDelegate.swift 是应用的入口文件之一,负责处理应用的生命周期事件,如应用启动、进入后台等。

import UIKit
import SwiftUI

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        let contentView = ContentView()

        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = UIHostingController(rootView: contentView)
        self.window?.makeKeyAndVisible()

        return true
    }
}

SceneDelegate.swift

SceneDelegate.swift 是应用的入口文件之一,负责处理场景的生命周期事件,如场景创建、进入后台等。

import UIKit
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()
        }
    }
}

MovieSwiftUIApp.swift

MovieSwiftUIApp.swift 是应用的主入口文件,使用 SwiftUI 的 @main 属性来定义应用的入口点。

import SwiftUI

@main
struct MovieSwiftUIApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

3. 项目的配置文件介绍

Info.plist

Info.plist 是应用的配置文件,包含了应用的基本信息和配置选项,如应用名称、版本号、权限设置等。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>$(DEVELOPMENT_LANGUAGE)</string>
    <key>CFBundleExecutable</key>
    <string>$(EXECUTABLE_NAME)</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

MovieSwiftUISwiftUI & Combine app using MovieDB API. With a custom Flux (Redux) implementation.项目地址:https://gitcode.com/gh_mirrors/mo/MovieSwiftUI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郁音允Zoe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值