MST

星途 面试题库

面试题:Swift中SwiftUI与Core Data集成基础 - 数据模型构建

在SwiftUI与Core Data集成的项目中,假设要创建一个简单的待办事项应用。请描述如何使用Core Data构建数据模型,包含事项标题、是否完成的布尔值这两个属性。并说明如何在SwiftUI视图中获取和显示这些数据。
40.0万 热度难度
编程语言Swift

知识考点

AI 面试

面试题答案

一键面试
  1. 使用Core Data构建数据模型
    • 打开Xcode项目,在项目导航器中选择.xcdatamodeld文件(如果没有,可通过File -> New -> File...,选择Core Data下的Data Model来创建)。
    • 在数据模型编辑器中,点击Add Entity按钮创建一个新的实体,例如命名为TodoItem
    • TodoItem实体添加属性:
      • 点击Add Attribute,添加一个名为title,类型为String的属性,用于存储事项标题。
      • 再添加一个名为isCompleted,类型为Boolean的属性,用于表示事项是否完成。
  2. 在SwiftUI视图中获取和显示数据
    • 首先,在SwiftUI视图中需要引入Core Data相关框架:
import CoreData
import SwiftUI
  • 创建一个NSFetchRequest来获取TodoItem数据:
let fetchRequest: NSFetchRequest<TodoItem> = TodoItem.fetchRequest()
fetchRequest.sortDescriptors = []
  • 使用@FetchRequest属性包装器在SwiftUI视图中获取数据:
struct ContentView: View {
    @FetchRequest(fetchRequest: fetchRequest) var todoItems: FetchedResults<TodoItem>
    var body: some View {
        List {
            ForEach(todoItems, id: \.self) { item in
                HStack {
                    Image(systemName: item.isCompleted ? "checkmark.circle.fill" : "circle")
                    Text(item.title ?? "No title")
                }
            }
        }
    }
}

这里通过@FetchRequest自动监听数据变化,FetchedResults包含了从Core Data获取的TodoItem实例,通过ForEach循环遍历并在List中显示每个待办事项的标题和完成状态图标。