-
iOS) Realm Numeric OptionaliOS 2020. 2. 28. 09:06728x90
Property cannot be marked @objc because its type cannot be represented in Objective-C
다음과 같은 에러가 발생한다면 숫자를 optional로 생성하려고 한 것은 아닌지 확인해보셔야 합니다.
String, Date, Date는 표준 Swift 문법을 따르면되지만,
Int, double과 같은 numeric 타입들은 단순히 Int? Double? 와 같은 optional 타입으로 하면 안되고 RealmOptional<T>() 타입을 사용해서 RealmOptional 변수의 value 프로퍼티를 이용해야합니다. 그리고 @objc dynamic var 가 아니라 let 을 사용합니다.
realm document 에는 다음과 같이 나와있습니다.
Required properties
String, Date, and Data properties can be declared as optional or required (non-optional) using standard Swift syntax. Optional numeric types are declared using the RealmOptional type:
class Person: Object { // Optional string property, defaulting to nil @objc dynamic var name: String? = nil // Optional int property, defaulting to nil // RealmOptional properties should always be declared with `let`, // as assigning to them directly will not work as desired let age = RealmOptional<Int>() } let realm = try! Realm() try! realm.write() { var person = realm.create(Person.self, value: ["Jane", 27]) // Reading from or modifying a `RealmOptional` is done via the `value` property person.age.value = 28 }
RealmOptional supports Int, Float, Double, Bool, and all of the sized versions of Int (Int8, Int16, Int32, Int64).
보기쉽게 다음 표를 참고하시면 좋을 것 같습니다.
감사합니다 :)
'iOS' 카테고리의 다른 글
포토샵, 일러스트 웹, 앱용 이미지 @2x @3x 변환 (0) 2020.03.03 iOS) simulator에서 API error (0) 2020.03.01 iOS) core data, transformable error (0) 2020.02.19 although set autolayout, UIImageView's image very huge (0) 2020.02.19 iOS) Storyboard 없이 개발하기2 (iOS13 개정판) (0) 2020.02.10