123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597 |
- ////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2014 Realm Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- ////////////////////////////////////////////////////////////////////////////
- import Foundation
- import RealmSwift
- import Realm
- class SwiftStringObject: Object {
- @objc dynamic var stringCol = ""
- }
- class SwiftBoolObject: Object {
- @objc dynamic var boolCol = false
- }
- class SwiftIntObject: Object {
- @objc dynamic var intCol = 0
- }
- class SwiftLongObject: Object {
- @objc dynamic var longCol: Int64 = 0
- }
- class SwiftObject: Object {
- @objc dynamic var boolCol = false
- @objc dynamic var intCol = 123
- @objc dynamic var floatCol = 1.23 as Float
- @objc dynamic var doubleCol = 12.3
- @objc dynamic var stringCol = "a"
- @objc dynamic var binaryCol = "a".data(using: String.Encoding.utf8)!
- @objc dynamic var dateCol = Date(timeIntervalSince1970: 1)
- @objc dynamic var objectCol: SwiftBoolObject? = SwiftBoolObject()
- let arrayCol = List<SwiftBoolObject>()
- class func defaultValues() -> [String: Any] {
- return [
- "boolCol": false,
- "intCol": 123,
- "floatCol": 1.23 as Float,
- "doubleCol": 12.3,
- "stringCol": "a",
- "binaryCol": "a".data(using: String.Encoding.utf8)!,
- "dateCol": Date(timeIntervalSince1970: 1),
- "objectCol": [false],
- "arrayCol": []
- ]
- }
- }
- class SwiftOptionalObject: Object {
- @objc dynamic var optNSStringCol: NSString?
- @objc dynamic var optStringCol: String?
- @objc dynamic var optBinaryCol: Data?
- @objc dynamic var optDateCol: Date?
- let optIntCol = RealmOptional<Int>()
- let optInt8Col = RealmOptional<Int8>()
- let optInt16Col = RealmOptional<Int16>()
- let optInt32Col = RealmOptional<Int32>()
- let optInt64Col = RealmOptional<Int64>()
- let optFloatCol = RealmOptional<Float>()
- let optDoubleCol = RealmOptional<Double>()
- let optBoolCol = RealmOptional<Bool>()
- @objc dynamic var optObjectCol: SwiftBoolObject?
- }
- class SwiftOptionalPrimaryObject: SwiftOptionalObject {
- let id = RealmOptional<Int>()
- override class func primaryKey() -> String? { return "id" }
- }
- class SwiftListObject: Object {
- let int = List<Int>()
- let int8 = List<Int8>()
- let int16 = List<Int16>()
- let int32 = List<Int32>()
- let int64 = List<Int64>()
- let float = List<Float>()
- let double = List<Double>()
- let string = List<String>()
- let data = List<Data>()
- let date = List<Date>()
- let intOpt = List<Int?>()
- let int8Opt = List<Int8?>()
- let int16Opt = List<Int16?>()
- let int32Opt = List<Int32?>()
- let int64Opt = List<Int64?>()
- let floatOpt = List<Float?>()
- let doubleOpt = List<Double?>()
- let stringOpt = List<String?>()
- let dataOpt = List<Data?>()
- let dateOpt = List<Date?>()
- }
- class SwiftImplicitlyUnwrappedOptionalObject: Object {
- @objc dynamic var optNSStringCol: NSString!
- @objc dynamic var optStringCol: String!
- @objc dynamic var optBinaryCol: Data!
- @objc dynamic var optDateCol: Date!
- @objc dynamic var optObjectCol: SwiftBoolObject!
- }
- class SwiftOptionalDefaultValuesObject: Object {
- @objc dynamic var optNSStringCol: NSString? = "A"
- @objc dynamic var optStringCol: String? = "B"
- @objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
- @objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
- let optIntCol = RealmOptional<Int>(1)
- let optInt8Col = RealmOptional<Int8>(1)
- let optInt16Col = RealmOptional<Int16>(1)
- let optInt32Col = RealmOptional<Int32>(1)
- let optInt64Col = RealmOptional<Int64>(1)
- let optFloatCol = RealmOptional<Float>(2.2)
- let optDoubleCol = RealmOptional<Double>(3.3)
- let optBoolCol = RealmOptional<Bool>(true)
- @objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
- // let arrayCol = List<SwiftBoolObject?>()
- class func defaultValues() -> [String: Any] {
- return [
- "optNSStringCol": "A",
- "optStringCol": "B",
- "optBinaryCol": "C".data(using: String.Encoding.utf8)!,
- "optDateCol": Date(timeIntervalSince1970: 10),
- "optIntCol": 1,
- "optInt8Col": 1,
- "optInt16Col": 1,
- "optInt32Col": 1,
- "optInt64Col": 1,
- "optFloatCol": 2.2 as Float,
- "optDoubleCol": 3.3,
- "optBoolCol": true
- ]
- }
- }
- class SwiftOptionalIgnoredPropertiesObject: Object {
- @objc dynamic var id = 0
- @objc dynamic var optNSStringCol: NSString? = "A"
- @objc dynamic var optStringCol: String? = "B"
- @objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
- @objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
- @objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
- override class func ignoredProperties() -> [String] {
- return [
- "optNSStringCol",
- "optStringCol",
- "optBinaryCol",
- "optDateCol",
- "optObjectCol"
- ]
- }
- }
- class SwiftDogObject: Object {
- @objc dynamic var dogName = ""
- let owners = LinkingObjects(fromType: SwiftOwnerObject.self, property: "dog")
- }
- class SwiftOwnerObject: Object {
- @objc dynamic var name = ""
- @objc dynamic var dog: SwiftDogObject? = SwiftDogObject()
- }
- class SwiftAggregateObject: Object {
- @objc dynamic var intCol = 0
- @objc dynamic var floatCol = 0 as Float
- @objc dynamic var doubleCol = 0.0
- @objc dynamic var boolCol = false
- @objc dynamic var dateCol = Date()
- @objc dynamic var trueCol = true
- let stringListCol = List<SwiftStringObject>()
- }
- class SwiftAllIntSizesObject: Object {
- @objc dynamic var int8: Int8 = 0
- @objc dynamic var int16: Int16 = 0
- @objc dynamic var int32: Int32 = 0
- @objc dynamic var int64: Int64 = 0
- }
- class SwiftEmployeeObject: Object {
- @objc dynamic var name = ""
- @objc dynamic var age = 0
- @objc dynamic var hired = false
- }
- class SwiftCompanyObject: Object {
- let employees = List<SwiftEmployeeObject>()
- }
- class SwiftArrayPropertyObject: Object {
- @objc dynamic var name = ""
- let array = List<SwiftStringObject>()
- let intArray = List<SwiftIntObject>()
- }
- class SwiftDoubleListOfSwiftObject: Object {
- let array = List<SwiftListOfSwiftObject>()
- }
- class SwiftListOfSwiftObject: Object {
- let array = List<SwiftObject>()
- }
- class SwiftListOfSwiftOptionalObject: Object {
- let array = List<SwiftOptionalObject>()
- }
- class SwiftArrayPropertySubclassObject: SwiftArrayPropertyObject {
- let boolArray = List<SwiftBoolObject>()
- }
- class SwiftLinkToPrimaryStringObject: Object {
- @objc dynamic var pk = ""
- @objc dynamic var object: SwiftPrimaryStringObject?
- let objects = List<SwiftPrimaryStringObject>()
- override class func primaryKey() -> String? {
- return "pk"
- }
- }
- class SwiftUTF8Object: Object {
- // swiftlint:disable:next identifier_name
- @objc dynamic var 柱колоéнǢкƱаم👍 = "值значен™👍☞⎠‱௹♣︎☐▼❒∑⨌⧭иеمرحبا"
- }
- class SwiftIgnoredPropertiesObject: Object {
- @objc dynamic var name = ""
- @objc dynamic var age = 0
- @objc dynamic var runtimeProperty: AnyObject?
- @objc dynamic var runtimeDefaultProperty = "property"
- @objc dynamic var readOnlyProperty: Int { return 0 }
- override class func ignoredProperties() -> [String] {
- return ["runtimeProperty", "runtimeDefaultProperty"]
- }
- }
- class SwiftRecursiveObject: Object {
- let objects = List<SwiftRecursiveObject>()
- }
- protocol SwiftPrimaryKeyObjectType {
- associatedtype PrimaryKey
- static func primaryKey() -> String?
- }
- class SwiftPrimaryStringObject: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var intCol = 0
- typealias PrimaryKey = String
- override class func primaryKey() -> String? {
- return "stringCol"
- }
- }
- class SwiftPrimaryOptionalStringObject: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol: String? = ""
- @objc dynamic var intCol = 0
- typealias PrimaryKey = String?
- override class func primaryKey() -> String? {
- return "stringCol"
- }
- }
- class SwiftPrimaryIntObject: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var intCol = 0
- typealias PrimaryKey = Int
- override class func primaryKey() -> String? {
- return "intCol"
- }
- }
- class SwiftPrimaryOptionalIntObject: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- let intCol = RealmOptional<Int>()
- typealias PrimaryKey = RealmOptional<Int>
- override class func primaryKey() -> String? {
- return "intCol"
- }
- }
- class SwiftPrimaryInt8Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var int8Col: Int8 = 0
- typealias PrimaryKey = Int8
- override class func primaryKey() -> String? {
- return "int8Col"
- }
- }
- class SwiftPrimaryOptionalInt8Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- let int8Col = RealmOptional<Int8>()
- typealias PrimaryKey = RealmOptional<Int8>
- override class func primaryKey() -> String? {
- return "int8Col"
- }
- }
- class SwiftPrimaryInt16Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var int16Col: Int16 = 0
- typealias PrimaryKey = Int16
- override class func primaryKey() -> String? {
- return "int16Col"
- }
- }
- class SwiftPrimaryOptionalInt16Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- let int16Col = RealmOptional<Int16>()
- typealias PrimaryKey = RealmOptional<Int16>
- override class func primaryKey() -> String? {
- return "int16Col"
- }
- }
- class SwiftPrimaryInt32Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var int32Col: Int32 = 0
- typealias PrimaryKey = Int32
- override class func primaryKey() -> String? {
- return "int32Col"
- }
- }
- class SwiftPrimaryOptionalInt32Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- let int32Col = RealmOptional<Int32>()
- typealias PrimaryKey = RealmOptional<Int32>
- override class func primaryKey() -> String? {
- return "int32Col"
- }
- }
- class SwiftPrimaryInt64Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- @objc dynamic var int64Col: Int64 = 0
- typealias PrimaryKey = Int64
- override class func primaryKey() -> String? {
- return "int64Col"
- }
- }
- class SwiftPrimaryOptionalInt64Object: Object, SwiftPrimaryKeyObjectType {
- @objc dynamic var stringCol = ""
- let int64Col = RealmOptional<Int64>()
- typealias PrimaryKey = RealmOptional<Int64>
- override class func primaryKey() -> String? {
- return "int64Col"
- }
- }
- class SwiftIndexedPropertiesObject: Object {
- @objc dynamic var stringCol = ""
- @objc dynamic var intCol = 0
- @objc dynamic var int8Col: Int8 = 0
- @objc dynamic var int16Col: Int16 = 0
- @objc dynamic var int32Col: Int32 = 0
- @objc dynamic var int64Col: Int64 = 0
- @objc dynamic var boolCol = false
- @objc dynamic var dateCol = Date()
- @objc dynamic var floatCol: Float = 0.0
- @objc dynamic var doubleCol: Double = 0.0
- @objc dynamic var dataCol = Data()
- override class func indexedProperties() -> [String] {
- return ["stringCol", "intCol", "int8Col", "int16Col", "int32Col", "int64Col", "boolCol", "dateCol"]
- }
- }
- class SwiftIndexedOptionalPropertiesObject: Object {
- @objc dynamic var optionalStringCol: String? = ""
- let optionalIntCol = RealmOptional<Int>()
- let optionalInt8Col = RealmOptional<Int8>()
- let optionalInt16Col = RealmOptional<Int16>()
- let optionalInt32Col = RealmOptional<Int32>()
- let optionalInt64Col = RealmOptional<Int64>()
- let optionalBoolCol = RealmOptional<Bool>()
- @objc dynamic var optionalDateCol: Date? = Date()
- let optionalFloatCol = RealmOptional<Float>()
- let optionalDoubleCol = RealmOptional<Double>()
- @objc dynamic var optionalDataCol: Data? = Data()
- override class func indexedProperties() -> [String] {
- return ["optionalStringCol", "optionalIntCol", "optionalInt8Col", "optionalInt16Col",
- "optionalInt32Col", "optionalInt64Col", "optionalBoolCol", "optionalDateCol"]
- }
- }
- class SwiftCustomInitializerObject: Object {
- @objc dynamic var stringCol: String
- init(stringVal: String) {
- stringCol = stringVal
- super.init()
- }
- required init() {
- stringCol = ""
- super.init()
- }
- required init(realm: RLMRealm, schema: RLMObjectSchema) {
- stringCol = ""
- super.init(realm: realm, schema: schema)
- }
- required init(value: Any, schema: RLMSchema) {
- stringCol = ""
- super.init(value: value, schema: schema)
- }
- }
- class SwiftConvenienceInitializerObject: Object {
- @objc dynamic var stringCol = ""
- convenience init(stringCol: String) {
- self.init()
- self.stringCol = stringCol
- }
- }
- class SwiftObjectiveCTypesObject: Object {
- @objc dynamic var stringCol: NSString?
- @objc dynamic var dateCol: NSDate?
- @objc dynamic var dataCol: NSData?
- @objc dynamic var numCol: NSNumber? = 0
- }
- class SwiftComputedPropertyNotIgnoredObject: Object {
- // swiftlint:disable:next identifier_name
- @objc dynamic var _urlBacking = ""
- // Dynamic; no ivar
- @objc dynamic var dynamicURL: URL? {
- get {
- return URL(string: _urlBacking)
- }
- set {
- _urlBacking = newValue?.absoluteString ?? ""
- }
- }
- // Non-dynamic; no ivar
- var url: URL? {
- get {
- return URL(string: _urlBacking)
- }
- set {
- _urlBacking = newValue?.absoluteString ?? ""
- }
- }
- }
- @objc(SwiftObjcRenamedObject)
- class SwiftObjcRenamedObject: Object {
- @objc dynamic var stringCol = ""
- }
- @objc(SwiftObjcRenamedObjectWithTotallyDifferentName)
- class SwiftObjcArbitrarilyRenamedObject: Object {
- @objc dynamic var boolCol = false
- }
- class SwiftCircleObject: Object {
- @objc dynamic var obj: SwiftCircleObject?
- let array = List<SwiftCircleObject>()
- }
- // Exists to serve as a superclass to `SwiftGenericPropsOrderingObject`
- class SwiftGenericPropsOrderingParent: Object {
- var implicitlyIgnoredComputedProperty: Int { return 0 }
- let implicitlyIgnoredReadOnlyProperty: Int = 1
- let parentFirstList = List<SwiftIntObject>()
- @objc dynamic var parentFirstNumber = 0
- func parentFunction() -> Int { return parentFirstNumber + 1 }
- @objc dynamic var parentSecondNumber = 1
- var parentComputedProp: String { return "hello world" }
- }
- // Used to verify that Swift properties (generic and otherwise) are detected properly and
- // added to the schema in the correct order.
- class SwiftGenericPropsOrderingObject: SwiftGenericPropsOrderingParent {
- func myFunction() -> Int { return firstNumber + secondNumber + thirdNumber }
- @objc dynamic var dynamicComputed: Int { return 999 }
- var firstIgnored = 999
- @objc dynamic var dynamicIgnored = 999
- @objc dynamic var firstNumber = 0 // Managed property
- class func myClassFunction(x: Int, y: Int) -> Int { return x + y }
- var secondIgnored = 999
- lazy var lazyIgnored = 999
- let firstArray = List<SwiftStringObject>() // Managed property
- @objc dynamic var secondNumber = 0 // Managed property
- var computedProp: String { return "\(firstNumber), \(secondNumber), and \(thirdNumber)" }
- let secondArray = List<SwiftStringObject>() // Managed property
- override class func ignoredProperties() -> [String] {
- return ["firstIgnored", "dynamicIgnored", "secondIgnored", "thirdIgnored", "lazyIgnored", "dynamicLazyIgnored"]
- }
- let firstOptionalNumber = RealmOptional<Int>() // Managed property
- var thirdIgnored = 999
- @objc dynamic lazy var dynamicLazyIgnored = 999
- let firstLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "first")
- let secondLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "second")
- @objc dynamic var thirdNumber = 0 // Managed property
- let secondOptionalNumber = RealmOptional<Int>() // Managed property
- }
- // Only exists to allow linking object properties on `SwiftGenericPropsNotLastObject`.
- class SwiftGenericPropsOrderingHelper: Object {
- @objc dynamic var first: SwiftGenericPropsOrderingObject?
- @objc dynamic var second: SwiftGenericPropsOrderingObject?
- }
- class SwiftRenamedProperties1: Object {
- @objc dynamic var propA = 0
- @objc dynamic var propB = ""
- let linking1 = LinkingObjects(fromType: LinkToSwiftRenamedProperties1.self, property: "linkA")
- let linking2 = LinkingObjects(fromType: LinkToSwiftRenamedProperties2.self, property: "linkD")
- override class func _realmObjectName() -> String { return "Swift Renamed Properties" }
- override class func _realmColumnNames() -> [String: String] {
- return ["propA": "prop 1", "propB": "prop 2"]
- }
- }
- class SwiftRenamedProperties2: Object {
- @objc dynamic var propC = 0
- @objc dynamic var propD = ""
- let linking1 = LinkingObjects(fromType: LinkToSwiftRenamedProperties1.self, property: "linkA")
- let linking2 = LinkingObjects(fromType: LinkToSwiftRenamedProperties2.self, property: "linkD")
- override class func _realmObjectName() -> String { return "Swift Renamed Properties" }
- override class func _realmColumnNames() -> [String: String] {
- return ["propC": "prop 1", "propD": "prop 2"]
- }
- }
- class LinkToSwiftRenamedProperties1: Object {
- @objc dynamic var linkA: SwiftRenamedProperties1?
- @objc dynamic var linkB: SwiftRenamedProperties2?
- let array1 = List<SwiftRenamedProperties1>()
- override class func _realmObjectName() -> String { return "Link To Swift Renamed Properties" }
- override class func _realmColumnNames() -> [String: String] {
- return ["linkA": "link 1", "linkB": "link 2", "array1": "array"]
- }
- }
- class LinkToSwiftRenamedProperties2: Object {
- @objc dynamic var linkC: SwiftRenamedProperties1?
- @objc dynamic var linkD: SwiftRenamedProperties2?
- let array2 = List<SwiftRenamedProperties2>()
- override class func _realmObjectName() -> String { return "Link To Swift Renamed Properties" }
- override class func _realmColumnNames() -> [String: String] {
- return ["linkC": "link 1", "linkD": "link 2", "array2": "array"]
- }
- }
|