Swift에서 Realm은 데이터베이스를 다루기 위한 강력한 도구입니다. Realm을 사용하여 객체 간의 관계를 설정하고 관리할 수 있습니다. 이 글에서는 Swift Realm에서의 관계 설정 방법에 대해 알아보겠습니다.
1. 일대다 관계 설정하기
일대다 관계는 한 객체가 다른 객체들과의 관계를 가지는 경우를 의미합니다. 예를 들어, 하나의 사용자는 여러 개의 포스트를 작성할 수 있습니다. 이런 경우, User와 Post 사이에 일대다 관계를 설정해야 합니다.
// User.swift
import RealmSwift
class User: Object {
@objc dynamic var id: Int = 0
@objc dynamic var name: String = ""
let posts = List<Post>()
}
// Post.swift
import RealmSwift
class Post: Object {
@objc dynamic var id: Int = 0
@objc dynamic var title: String = ""
@objc dynamic var content: String = ""
let user = LinkingObjects(fromType: User.self, property: "posts")
}
위의 코드에서는 User 클래스에 List<Post>
타입의 posts
속성을 추가하여 사용자가 작성한 모든 포스트를 저장합니다. 또한, Post 클래스에는 LinkingObjects
를 사용하여 해당 포스트가 어떤 사용자에게 속해있는지를 저장합니다.
2. 일대일 관계 설정하기
일대일 관계는 한 객체가 다른 객체와의 하나의 관계만을 가지는 경우를 의미합니다. 예를 들어, 사용자는 하나의 프로필을 가지고 있을 수 있습니다. 이 경우, User와 Profile 사이에 일대일 관계를 설정해야 합니다.
// User.swift
import RealmSwift
class User: Object {
@objc dynamic var id: Int = 0
@objc dynamic var name: String = ""
@objc dynamic var profile: Profile?
}
// Profile.swift
import RealmSwift
class Profile: Object {
@objc dynamic var id: Int = 0
@objc dynamic var bio: String = ""
let user = LinkingObjects(fromType: User.self, property: "profile")
}
위의 코드에서는 User 클래스에 Profile
타입의 profile
속성을 추가하여 사용자의 프로필을 저장합니다. 또한, Profile 클래스에는 LinkingObjects
를 사용하여 해당 프로필이 어떤 사용자에게 속해있는지를 저장합니다.
3. 다대다 관계 설정하기
다대다 관계는 한 객체가 여러 개의 다른 객체들과의 관계를 가지는 경우를 의미합니다. 예를 들어, 사용자는 여러 개의 태그를 가질 수 있고, 태그는 여러 사용자에게 속할 수 있습니다. 이런 경우, User와 Tag 사이에 다대다 관계를 설정해야 합니다.
// User.swift
import RealmSwift
class User: Object {
@objc dynamic var id: Int = 0
@objc dynamic var name: String = ""
let tags = List<Tag>()
}
// Tag.swift
import RealmSwift
class Tag: Object {
@objc dynamic var id: Int = 0
@objc dynamic var name: String = ""
let users = LinkingObjects(fromType: User.self, property: "tags")
}
위의 코드에서는 User 클래스에 List<Tag>
타입의 tags
속성을 추가하여 사용자가 가지는 모든 태그를 저장합니다. 또한, Tag 클래스에는 LinkingObjects
를 사용하여 해당 태그가 어떤 사용자에게 속해있는지를 저장합니다.
이상으로, Swift Realm에서의 관계 설정 방법에 대해 알아보았습니다. 각각의 관계 유형에 맞는 속성과 LinkingObjects
를 사용하여 객체 간의 관계를 설정하고 활용할 수 있습니다.