Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,88 @@ struct TeamIntroduceApp: App {
var body: some Scene {
WindowGroup {
RootView()
.modelContainer(for: TeamMember.self) { result in
// 🎯 초기 데이터 설정
switch result {
case .success(let container):
setupInitialData(container: container)
case .failure(let error):
print("❌ SwiftData 컨테이너 생성 실패: \(error)")
}
}
}
}

// MARK: - 초기 데이터 설정
private func setupInitialData(container: ModelContainer) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 이건 뷰모델에서 넣어도 되지 않을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

root view model 생성해서 하자는 말씀이신거죠??
다른 main view model에서 하게 되면
데이터를 넣고 호출하는게 동시에 일어나거나 한 곳에서 일어나서 어색할 것 같아요

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Peter1119 흠 그럴수도 있겎네요

let context = container.mainContext

// 🔍 기존 데이터 확인
let descriptor = FetchDescriptor<TeamMember>()
let existingCount = (try? context.fetch(descriptor).count) ?? 0

print("📊 기존 팀원 데이터 개수: \(existingCount)")

// 데이터가 없으면 샘플 데이터 추가
if existingCount == 0 {
print("🎯 초기 팀원 데이터 생성 중...")

let members = createMembers()

for member in members {
context.insert(member)
print("✅ 팀원 추가: \(member.name) (ID: \(member.id))")
}

do {
try context.save()
print("💾 초기 데이터 저장 완료!")

// 저장 후 다시 확인
let savedCount = (try? context.fetch(descriptor).count) ?? 0
print("📊 저장된 팀원 데이터 개수: \(savedCount)")
} catch {
print("❌ 데이터 저장 실패: \(error)")
}
} else {
print("ℹ️ 기존 데이터가 있어서 초기화를 건너뜁니다.")
}
}

// MARK: - 샘플 데이터 생성
private func createMembers() -> [TeamMember] {
return [
TeamMember(
name: "김민희",
imageName: "person.crop.circle",
role: "iOS Developer",
mbti: "ESTP",
introduction: "캠프 후 되고 싶은 나의 모습 혹은 미래의 나의 모습을 한마디로 적어보세요! 생생하게 꿈꾸면 이루어진답니다!",
strengths: ["UIKit", "Core Data", "Auto Layout", "Unit Testing"],
blogLink: "https://0minnie0.tistory.com/",
collaborationStyle: "세심한 검토, 문서화 중시, 체계적 정리, 품질 관리",
isLeader: true
),
TeamMember(
name: "서원지",
imageName: "person.crop.circle.fill",
role: "iOS Developer",
mbti: "INTP",
introduction: "좀 큰 기업에 입사를 하고 다양한 프로젝트르 하고 싶습니다",
strengths: ["Swift", "RxSwift", "Clean Architecture", "Firebase Integration"],
blogLink: "https://velog.io/@suhwj/posts",
collaborationStyle: "창의적 문제해결, 사용자 중심 사고, 논리적 분석, 기술 연구"
),
TeamMember(
name: "홍석현",
imageName: "person.circle.fill",
role: "iOS Developer",
mbti: "ENFJ",
introduction: "안녕하세요! 열정적인 iOS 개발자입니다.",
strengths: ["SwiftUI", "Combine", "Swift Concurrency", "MVVM Architecture"],
blogLink: "https://blog.example.com/hong",
collaborationStyle: "적극적 소통, 코드 리뷰, 팀 리딩, 지식 공유"
)
]
}
}
18 changes: 0 additions & 18 deletions TeamIntroduce/TeamIntroduce/Sources/Core/Data/Item.swift

This file was deleted.

47 changes: 47 additions & 0 deletions TeamIntroduce/TeamIntroduce/Sources/Core/Data/TeamMember.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//
// TeamMember.swift
// TeamIntroduce
//
// Created by 홍석현 on 8/12/25.
//

import Foundation
import SwiftData

@Model
final class TeamMember: Identifiable {
var id: UUID
var name: String
var imageName: String
var role: String
var mbti: String
var introduction: String
var strengths: [String]
var blogLink: String
var collaborationStyle: String
var isLeader: Bool

init(
id: UUID = UUID(),
name: String,
imageName: String,
role: String,
mbti: String,
introduction: String,
strengths: [String],
blogLink: String,
collaborationStyle: String,
isLeader: Bool = false
) {
self.id = id
self.name = name
self.imageName = imageName
self.role = role
self.mbti = mbti
self.introduction = introduction
self.strengths = strengths
self.blogLink = blogLink
self.collaborationStyle = collaborationStyle
self.isLeader = isLeader
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct IntorduceCoordinatorView : View {

var sharedModelContainer: ModelContainer = {
let schema = Schema([
Item.self,
TeamMember.self,
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,12 @@ import SwiftData

struct ContentView: View {
@Environment(\.modelContext) private var modelContext
@Query private var items: [Item]
@Query private var teamMembers: [TeamMember]
@EnvironmentObject private var coordinator: IntroduceCoordinator

var body: some View {
ZStack {
Color.white
.edgesIgnoringSafeArea(.all)

VStack {
Spacer()

Text("main")

Spacer()


Spacer()
.frame(height: 20)
}
}
}

private func addItem() {
withAnimation {
let newItem = Item(timestamp: Date())
modelContext.insert(newItem)
}
}

private func deleteItems(offsets: IndexSet) {
withAnimation {
for index in offsets {
modelContext.delete(items[index])
}
List(teamMembers, id: \.id) { member in
Text(member.name)
}
}
}
Expand All @@ -56,5 +28,5 @@ extension ContentView {

#Preview {
ContentView()
.modelContainer(for: Item.self, inMemory: true)
.modelContainer(for: TeamMember.self, inMemory: true)
}