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>