-
[Swift/Study] Realm 속성으로 객체/인스턴스 리스트Study/ios 2023. 6. 30. 00:27
학교 클래스 - 학년, 반, 인원(배열)
인원 클래스 - 학번, 이름
realm을 공부하고 정리하려 했는데 너무 잘 정리해주신 분이 계셔서 링크로 대체하고..
https://gonslab.tistory.com/16
나는 한 클래스의 속성으로 인스턴스 리스트를 사용하는 방법을 정리해보려한다.
먼저 학생 클래스를 하나 만들어 보겠다.
import RealmSwift // 학생 클래스 class Student: Object { @objc dynamic var name: String = "" // 이름 @objc dynamic var number: String = "" // 학번 convenience init(name: String, number: String) { self.init() self.name = name self.number = number } }
이름과 학번을 갖는 학생 클래스를 하나 만들어 준다.
생성자인 init함수는 위와 같이 convenience와 함께 써줘야 오류가 나지 않는다.
그리고 학교 클래스를 만들어 보겠다.
import RealmSwift 학교 클래스 class School: Object { @objc dynamic var name: String = "" // 이름 var students = List<Student>() // 학생 리스트 convenience init(name: String) { self.init() self.name = name } func addStudent(name: String, number: String) { students.append(Student(name: name, number: number)) } }
속성은 간단하게 이름과 학생 리스트로 지정했다.
이때 위에서 만들었던 Student클래스를 리스트로 정의하면 인스턴스 리스트를 속성으로 사용할 수 있다.
그리고 addStudent함수로 학생을 리스트에 한명씩 추가할 수 있다.
먼저 2개의 학교 객체를 만들어서 realm에 추가해 보겠다.
// 객체 생성 let school_1 = School(name: "학교1") let school_2 = School(name: "학교2") // 데이터 베이스 저장 try! realm.write { realm.add(school_1) realm.add(school_2) }
2개의 객체가 생성된 모습
이번에는 학교1에 2명의 학생을 추가해 보겠다.
// realm에서 가져오기 let school = realm.objects(School.self) // school[0]은 학교1 이다. try! realm.write { // 학교1에 2명의 학생 추가 school[0].addStudent(name: "홍길동", number: "0101") school[0].addStudent(name: "김철수", number: "0102") }
addStudentg함수로 이름과 학번을 입력하여 학생 추가
학교1에 2명의 객체가 추가된 모습
마지막으로 학교2에 3명의 학생을 추가해 보겠다.
이렇게 학교1, 학교2에 독립적으로 학생을 여러명 추가할 수 있다.
학생 정보를 가져오는 것은 일반 리스트 사용법과 동일하고 삭제, 업데이트도 realm사용법과 동일하기 때문에 생략하도록 하겠다.
그래서 오늘은 realm에 대해 공부하고 내가 필요한 부분을 추가적으로 정리하였는데 아직 놓친 부분도 분명히 있을 것 같아 나중에 더 깊게 공부해봐야 겠다. 그럼 이만!
'Study > ios' 카테고리의 다른 글
[Swift/Study] TableView 안에 TableView (0) 2023.07.03 [Swift/Study] TableView 셀을 둥글게 만들고 간격 띄우기 (0) 2023.07.02 [Swift/Study] 옵셔널 체이닝 (0) 2023.06.28 [Swift/Study] 옵셔널 추출 (0) 2023.06.28 [Swift/Study] 옵셔널이란? (0) 2023.06.28