SwiftTestObjects.swift 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2014 Realm Inc.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. ////////////////////////////////////////////////////////////////////////////
  18. import Foundation
  19. import RealmSwift
  20. import Realm
  21. class SwiftStringObject: Object {
  22. @objc dynamic var stringCol = ""
  23. }
  24. class SwiftBoolObject: Object {
  25. @objc dynamic var boolCol = false
  26. }
  27. class SwiftIntObject: Object {
  28. @objc dynamic var intCol = 0
  29. }
  30. class SwiftLongObject: Object {
  31. @objc dynamic var longCol: Int64 = 0
  32. }
  33. class SwiftObject: Object {
  34. @objc dynamic var boolCol = false
  35. @objc dynamic var intCol = 123
  36. @objc dynamic var floatCol = 1.23 as Float
  37. @objc dynamic var doubleCol = 12.3
  38. @objc dynamic var stringCol = "a"
  39. @objc dynamic var binaryCol = "a".data(using: String.Encoding.utf8)!
  40. @objc dynamic var dateCol = Date(timeIntervalSince1970: 1)
  41. @objc dynamic var objectCol: SwiftBoolObject? = SwiftBoolObject()
  42. let arrayCol = List<SwiftBoolObject>()
  43. class func defaultValues() -> [String: Any] {
  44. return [
  45. "boolCol": false,
  46. "intCol": 123,
  47. "floatCol": 1.23 as Float,
  48. "doubleCol": 12.3,
  49. "stringCol": "a",
  50. "binaryCol": "a".data(using: String.Encoding.utf8)!,
  51. "dateCol": Date(timeIntervalSince1970: 1),
  52. "objectCol": [false],
  53. "arrayCol": []
  54. ]
  55. }
  56. }
  57. class SwiftOptionalObject: Object {
  58. @objc dynamic var optNSStringCol: NSString?
  59. @objc dynamic var optStringCol: String?
  60. @objc dynamic var optBinaryCol: Data?
  61. @objc dynamic var optDateCol: Date?
  62. let optIntCol = RealmOptional<Int>()
  63. let optInt8Col = RealmOptional<Int8>()
  64. let optInt16Col = RealmOptional<Int16>()
  65. let optInt32Col = RealmOptional<Int32>()
  66. let optInt64Col = RealmOptional<Int64>()
  67. let optFloatCol = RealmOptional<Float>()
  68. let optDoubleCol = RealmOptional<Double>()
  69. let optBoolCol = RealmOptional<Bool>()
  70. @objc dynamic var optObjectCol: SwiftBoolObject?
  71. }
  72. class SwiftOptionalPrimaryObject: SwiftOptionalObject {
  73. let id = RealmOptional<Int>()
  74. override class func primaryKey() -> String? { return "id" }
  75. }
  76. class SwiftListObject: Object {
  77. let int = List<Int>()
  78. let int8 = List<Int8>()
  79. let int16 = List<Int16>()
  80. let int32 = List<Int32>()
  81. let int64 = List<Int64>()
  82. let float = List<Float>()
  83. let double = List<Double>()
  84. let string = List<String>()
  85. let data = List<Data>()
  86. let date = List<Date>()
  87. let intOpt = List<Int?>()
  88. let int8Opt = List<Int8?>()
  89. let int16Opt = List<Int16?>()
  90. let int32Opt = List<Int32?>()
  91. let int64Opt = List<Int64?>()
  92. let floatOpt = List<Float?>()
  93. let doubleOpt = List<Double?>()
  94. let stringOpt = List<String?>()
  95. let dataOpt = List<Data?>()
  96. let dateOpt = List<Date?>()
  97. }
  98. class SwiftImplicitlyUnwrappedOptionalObject: Object {
  99. @objc dynamic var optNSStringCol: NSString!
  100. @objc dynamic var optStringCol: String!
  101. @objc dynamic var optBinaryCol: Data!
  102. @objc dynamic var optDateCol: Date!
  103. @objc dynamic var optObjectCol: SwiftBoolObject!
  104. }
  105. class SwiftOptionalDefaultValuesObject: Object {
  106. @objc dynamic var optNSStringCol: NSString? = "A"
  107. @objc dynamic var optStringCol: String? = "B"
  108. @objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
  109. @objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
  110. let optIntCol = RealmOptional<Int>(1)
  111. let optInt8Col = RealmOptional<Int8>(1)
  112. let optInt16Col = RealmOptional<Int16>(1)
  113. let optInt32Col = RealmOptional<Int32>(1)
  114. let optInt64Col = RealmOptional<Int64>(1)
  115. let optFloatCol = RealmOptional<Float>(2.2)
  116. let optDoubleCol = RealmOptional<Double>(3.3)
  117. let optBoolCol = RealmOptional<Bool>(true)
  118. @objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
  119. // let arrayCol = List<SwiftBoolObject?>()
  120. class func defaultValues() -> [String: Any] {
  121. return [
  122. "optNSStringCol": "A",
  123. "optStringCol": "B",
  124. "optBinaryCol": "C".data(using: String.Encoding.utf8)!,
  125. "optDateCol": Date(timeIntervalSince1970: 10),
  126. "optIntCol": 1,
  127. "optInt8Col": 1,
  128. "optInt16Col": 1,
  129. "optInt32Col": 1,
  130. "optInt64Col": 1,
  131. "optFloatCol": 2.2 as Float,
  132. "optDoubleCol": 3.3,
  133. "optBoolCol": true
  134. ]
  135. }
  136. }
  137. class SwiftOptionalIgnoredPropertiesObject: Object {
  138. @objc dynamic var id = 0
  139. @objc dynamic var optNSStringCol: NSString? = "A"
  140. @objc dynamic var optStringCol: String? = "B"
  141. @objc dynamic var optBinaryCol: Data? = "C".data(using: String.Encoding.utf8)! as Data
  142. @objc dynamic var optDateCol: Date? = Date(timeIntervalSince1970: 10)
  143. @objc dynamic var optObjectCol: SwiftBoolObject? = SwiftBoolObject(value: [true])
  144. override class func ignoredProperties() -> [String] {
  145. return [
  146. "optNSStringCol",
  147. "optStringCol",
  148. "optBinaryCol",
  149. "optDateCol",
  150. "optObjectCol"
  151. ]
  152. }
  153. }
  154. class SwiftDogObject: Object {
  155. @objc dynamic var dogName = ""
  156. let owners = LinkingObjects(fromType: SwiftOwnerObject.self, property: "dog")
  157. }
  158. class SwiftOwnerObject: Object {
  159. @objc dynamic var name = ""
  160. @objc dynamic var dog: SwiftDogObject? = SwiftDogObject()
  161. }
  162. class SwiftAggregateObject: Object {
  163. @objc dynamic var intCol = 0
  164. @objc dynamic var floatCol = 0 as Float
  165. @objc dynamic var doubleCol = 0.0
  166. @objc dynamic var boolCol = false
  167. @objc dynamic var dateCol = Date()
  168. @objc dynamic var trueCol = true
  169. let stringListCol = List<SwiftStringObject>()
  170. }
  171. class SwiftAllIntSizesObject: Object {
  172. @objc dynamic var int8: Int8 = 0
  173. @objc dynamic var int16: Int16 = 0
  174. @objc dynamic var int32: Int32 = 0
  175. @objc dynamic var int64: Int64 = 0
  176. }
  177. class SwiftEmployeeObject: Object {
  178. @objc dynamic var name = ""
  179. @objc dynamic var age = 0
  180. @objc dynamic var hired = false
  181. }
  182. class SwiftCompanyObject: Object {
  183. let employees = List<SwiftEmployeeObject>()
  184. }
  185. class SwiftArrayPropertyObject: Object {
  186. @objc dynamic var name = ""
  187. let array = List<SwiftStringObject>()
  188. let intArray = List<SwiftIntObject>()
  189. }
  190. class SwiftDoubleListOfSwiftObject: Object {
  191. let array = List<SwiftListOfSwiftObject>()
  192. }
  193. class SwiftListOfSwiftObject: Object {
  194. let array = List<SwiftObject>()
  195. }
  196. class SwiftListOfSwiftOptionalObject: Object {
  197. let array = List<SwiftOptionalObject>()
  198. }
  199. class SwiftArrayPropertySubclassObject: SwiftArrayPropertyObject {
  200. let boolArray = List<SwiftBoolObject>()
  201. }
  202. class SwiftLinkToPrimaryStringObject: Object {
  203. @objc dynamic var pk = ""
  204. @objc dynamic var object: SwiftPrimaryStringObject?
  205. let objects = List<SwiftPrimaryStringObject>()
  206. override class func primaryKey() -> String? {
  207. return "pk"
  208. }
  209. }
  210. class SwiftUTF8Object: Object {
  211. // swiftlint:disable:next identifier_name
  212. @objc dynamic var 柱колоéнǢкƱаم👍 = "值значен™👍☞⎠‱௹♣︎☐▼❒∑⨌⧭иеمرحبا"
  213. }
  214. class SwiftIgnoredPropertiesObject: Object {
  215. @objc dynamic var name = ""
  216. @objc dynamic var age = 0
  217. @objc dynamic var runtimeProperty: AnyObject?
  218. @objc dynamic var runtimeDefaultProperty = "property"
  219. @objc dynamic var readOnlyProperty: Int { return 0 }
  220. override class func ignoredProperties() -> [String] {
  221. return ["runtimeProperty", "runtimeDefaultProperty"]
  222. }
  223. }
  224. class SwiftRecursiveObject: Object {
  225. let objects = List<SwiftRecursiveObject>()
  226. }
  227. protocol SwiftPrimaryKeyObjectType {
  228. associatedtype PrimaryKey
  229. static func primaryKey() -> String?
  230. }
  231. class SwiftPrimaryStringObject: Object, SwiftPrimaryKeyObjectType {
  232. @objc dynamic var stringCol = ""
  233. @objc dynamic var intCol = 0
  234. typealias PrimaryKey = String
  235. override class func primaryKey() -> String? {
  236. return "stringCol"
  237. }
  238. }
  239. class SwiftPrimaryOptionalStringObject: Object, SwiftPrimaryKeyObjectType {
  240. @objc dynamic var stringCol: String? = ""
  241. @objc dynamic var intCol = 0
  242. typealias PrimaryKey = String?
  243. override class func primaryKey() -> String? {
  244. return "stringCol"
  245. }
  246. }
  247. class SwiftPrimaryIntObject: Object, SwiftPrimaryKeyObjectType {
  248. @objc dynamic var stringCol = ""
  249. @objc dynamic var intCol = 0
  250. typealias PrimaryKey = Int
  251. override class func primaryKey() -> String? {
  252. return "intCol"
  253. }
  254. }
  255. class SwiftPrimaryOptionalIntObject: Object, SwiftPrimaryKeyObjectType {
  256. @objc dynamic var stringCol = ""
  257. let intCol = RealmOptional<Int>()
  258. typealias PrimaryKey = RealmOptional<Int>
  259. override class func primaryKey() -> String? {
  260. return "intCol"
  261. }
  262. }
  263. class SwiftPrimaryInt8Object: Object, SwiftPrimaryKeyObjectType {
  264. @objc dynamic var stringCol = ""
  265. @objc dynamic var int8Col: Int8 = 0
  266. typealias PrimaryKey = Int8
  267. override class func primaryKey() -> String? {
  268. return "int8Col"
  269. }
  270. }
  271. class SwiftPrimaryOptionalInt8Object: Object, SwiftPrimaryKeyObjectType {
  272. @objc dynamic var stringCol = ""
  273. let int8Col = RealmOptional<Int8>()
  274. typealias PrimaryKey = RealmOptional<Int8>
  275. override class func primaryKey() -> String? {
  276. return "int8Col"
  277. }
  278. }
  279. class SwiftPrimaryInt16Object: Object, SwiftPrimaryKeyObjectType {
  280. @objc dynamic var stringCol = ""
  281. @objc dynamic var int16Col: Int16 = 0
  282. typealias PrimaryKey = Int16
  283. override class func primaryKey() -> String? {
  284. return "int16Col"
  285. }
  286. }
  287. class SwiftPrimaryOptionalInt16Object: Object, SwiftPrimaryKeyObjectType {
  288. @objc dynamic var stringCol = ""
  289. let int16Col = RealmOptional<Int16>()
  290. typealias PrimaryKey = RealmOptional<Int16>
  291. override class func primaryKey() -> String? {
  292. return "int16Col"
  293. }
  294. }
  295. class SwiftPrimaryInt32Object: Object, SwiftPrimaryKeyObjectType {
  296. @objc dynamic var stringCol = ""
  297. @objc dynamic var int32Col: Int32 = 0
  298. typealias PrimaryKey = Int32
  299. override class func primaryKey() -> String? {
  300. return "int32Col"
  301. }
  302. }
  303. class SwiftPrimaryOptionalInt32Object: Object, SwiftPrimaryKeyObjectType {
  304. @objc dynamic var stringCol = ""
  305. let int32Col = RealmOptional<Int32>()
  306. typealias PrimaryKey = RealmOptional<Int32>
  307. override class func primaryKey() -> String? {
  308. return "int32Col"
  309. }
  310. }
  311. class SwiftPrimaryInt64Object: Object, SwiftPrimaryKeyObjectType {
  312. @objc dynamic var stringCol = ""
  313. @objc dynamic var int64Col: Int64 = 0
  314. typealias PrimaryKey = Int64
  315. override class func primaryKey() -> String? {
  316. return "int64Col"
  317. }
  318. }
  319. class SwiftPrimaryOptionalInt64Object: Object, SwiftPrimaryKeyObjectType {
  320. @objc dynamic var stringCol = ""
  321. let int64Col = RealmOptional<Int64>()
  322. typealias PrimaryKey = RealmOptional<Int64>
  323. override class func primaryKey() -> String? {
  324. return "int64Col"
  325. }
  326. }
  327. class SwiftIndexedPropertiesObject: Object {
  328. @objc dynamic var stringCol = ""
  329. @objc dynamic var intCol = 0
  330. @objc dynamic var int8Col: Int8 = 0
  331. @objc dynamic var int16Col: Int16 = 0
  332. @objc dynamic var int32Col: Int32 = 0
  333. @objc dynamic var int64Col: Int64 = 0
  334. @objc dynamic var boolCol = false
  335. @objc dynamic var dateCol = Date()
  336. @objc dynamic var floatCol: Float = 0.0
  337. @objc dynamic var doubleCol: Double = 0.0
  338. @objc dynamic var dataCol = Data()
  339. override class func indexedProperties() -> [String] {
  340. return ["stringCol", "intCol", "int8Col", "int16Col", "int32Col", "int64Col", "boolCol", "dateCol"]
  341. }
  342. }
  343. class SwiftIndexedOptionalPropertiesObject: Object {
  344. @objc dynamic var optionalStringCol: String? = ""
  345. let optionalIntCol = RealmOptional<Int>()
  346. let optionalInt8Col = RealmOptional<Int8>()
  347. let optionalInt16Col = RealmOptional<Int16>()
  348. let optionalInt32Col = RealmOptional<Int32>()
  349. let optionalInt64Col = RealmOptional<Int64>()
  350. let optionalBoolCol = RealmOptional<Bool>()
  351. @objc dynamic var optionalDateCol: Date? = Date()
  352. let optionalFloatCol = RealmOptional<Float>()
  353. let optionalDoubleCol = RealmOptional<Double>()
  354. @objc dynamic var optionalDataCol: Data? = Data()
  355. override class func indexedProperties() -> [String] {
  356. return ["optionalStringCol", "optionalIntCol", "optionalInt8Col", "optionalInt16Col",
  357. "optionalInt32Col", "optionalInt64Col", "optionalBoolCol", "optionalDateCol"]
  358. }
  359. }
  360. class SwiftCustomInitializerObject: Object {
  361. @objc dynamic var stringCol: String
  362. init(stringVal: String) {
  363. stringCol = stringVal
  364. super.init()
  365. }
  366. required init() {
  367. stringCol = ""
  368. super.init()
  369. }
  370. required init(realm: RLMRealm, schema: RLMObjectSchema) {
  371. stringCol = ""
  372. super.init(realm: realm, schema: schema)
  373. }
  374. required init(value: Any, schema: RLMSchema) {
  375. stringCol = ""
  376. super.init(value: value, schema: schema)
  377. }
  378. }
  379. class SwiftConvenienceInitializerObject: Object {
  380. @objc dynamic var stringCol = ""
  381. convenience init(stringCol: String) {
  382. self.init()
  383. self.stringCol = stringCol
  384. }
  385. }
  386. class SwiftObjectiveCTypesObject: Object {
  387. @objc dynamic var stringCol: NSString?
  388. @objc dynamic var dateCol: NSDate?
  389. @objc dynamic var dataCol: NSData?
  390. @objc dynamic var numCol: NSNumber? = 0
  391. }
  392. class SwiftComputedPropertyNotIgnoredObject: Object {
  393. // swiftlint:disable:next identifier_name
  394. @objc dynamic var _urlBacking = ""
  395. // Dynamic; no ivar
  396. @objc dynamic var dynamicURL: URL? {
  397. get {
  398. return URL(string: _urlBacking)
  399. }
  400. set {
  401. _urlBacking = newValue?.absoluteString ?? ""
  402. }
  403. }
  404. // Non-dynamic; no ivar
  405. var url: URL? {
  406. get {
  407. return URL(string: _urlBacking)
  408. }
  409. set {
  410. _urlBacking = newValue?.absoluteString ?? ""
  411. }
  412. }
  413. }
  414. @objc(SwiftObjcRenamedObject)
  415. class SwiftObjcRenamedObject: Object {
  416. @objc dynamic var stringCol = ""
  417. }
  418. @objc(SwiftObjcRenamedObjectWithTotallyDifferentName)
  419. class SwiftObjcArbitrarilyRenamedObject: Object {
  420. @objc dynamic var boolCol = false
  421. }
  422. class SwiftCircleObject: Object {
  423. @objc dynamic var obj: SwiftCircleObject?
  424. let array = List<SwiftCircleObject>()
  425. }
  426. // Exists to serve as a superclass to `SwiftGenericPropsOrderingObject`
  427. class SwiftGenericPropsOrderingParent: Object {
  428. var implicitlyIgnoredComputedProperty: Int { return 0 }
  429. let implicitlyIgnoredReadOnlyProperty: Int = 1
  430. let parentFirstList = List<SwiftIntObject>()
  431. @objc dynamic var parentFirstNumber = 0
  432. func parentFunction() -> Int { return parentFirstNumber + 1 }
  433. @objc dynamic var parentSecondNumber = 1
  434. var parentComputedProp: String { return "hello world" }
  435. }
  436. // Used to verify that Swift properties (generic and otherwise) are detected properly and
  437. // added to the schema in the correct order.
  438. class SwiftGenericPropsOrderingObject: SwiftGenericPropsOrderingParent {
  439. func myFunction() -> Int { return firstNumber + secondNumber + thirdNumber }
  440. @objc dynamic var dynamicComputed: Int { return 999 }
  441. var firstIgnored = 999
  442. @objc dynamic var dynamicIgnored = 999
  443. @objc dynamic var firstNumber = 0 // Managed property
  444. class func myClassFunction(x: Int, y: Int) -> Int { return x + y }
  445. var secondIgnored = 999
  446. lazy var lazyIgnored = 999
  447. let firstArray = List<SwiftStringObject>() // Managed property
  448. @objc dynamic var secondNumber = 0 // Managed property
  449. var computedProp: String { return "\(firstNumber), \(secondNumber), and \(thirdNumber)" }
  450. let secondArray = List<SwiftStringObject>() // Managed property
  451. override class func ignoredProperties() -> [String] {
  452. return ["firstIgnored", "dynamicIgnored", "secondIgnored", "thirdIgnored", "lazyIgnored", "dynamicLazyIgnored"]
  453. }
  454. let firstOptionalNumber = RealmOptional<Int>() // Managed property
  455. var thirdIgnored = 999
  456. @objc dynamic lazy var dynamicLazyIgnored = 999
  457. let firstLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "first")
  458. let secondLinking = LinkingObjects(fromType: SwiftGenericPropsOrderingHelper.self, property: "second")
  459. @objc dynamic var thirdNumber = 0 // Managed property
  460. let secondOptionalNumber = RealmOptional<Int>() // Managed property
  461. }
  462. // Only exists to allow linking object properties on `SwiftGenericPropsNotLastObject`.
  463. class SwiftGenericPropsOrderingHelper: Object {
  464. @objc dynamic var first: SwiftGenericPropsOrderingObject?
  465. @objc dynamic var second: SwiftGenericPropsOrderingObject?
  466. }
  467. class SwiftRenamedProperties1: Object {
  468. @objc dynamic var propA = 0
  469. @objc dynamic var propB = ""
  470. let linking1 = LinkingObjects(fromType: LinkToSwiftRenamedProperties1.self, property: "linkA")
  471. let linking2 = LinkingObjects(fromType: LinkToSwiftRenamedProperties2.self, property: "linkD")
  472. override class func _realmObjectName() -> String { return "Swift Renamed Properties" }
  473. override class func _realmColumnNames() -> [String: String] {
  474. return ["propA": "prop 1", "propB": "prop 2"]
  475. }
  476. }
  477. class SwiftRenamedProperties2: Object {
  478. @objc dynamic var propC = 0
  479. @objc dynamic var propD = ""
  480. let linking1 = LinkingObjects(fromType: LinkToSwiftRenamedProperties1.self, property: "linkA")
  481. let linking2 = LinkingObjects(fromType: LinkToSwiftRenamedProperties2.self, property: "linkD")
  482. override class func _realmObjectName() -> String { return "Swift Renamed Properties" }
  483. override class func _realmColumnNames() -> [String: String] {
  484. return ["propC": "prop 1", "propD": "prop 2"]
  485. }
  486. }
  487. class LinkToSwiftRenamedProperties1: Object {
  488. @objc dynamic var linkA: SwiftRenamedProperties1?
  489. @objc dynamic var linkB: SwiftRenamedProperties2?
  490. let array1 = List<SwiftRenamedProperties1>()
  491. override class func _realmObjectName() -> String { return "Link To Swift Renamed Properties" }
  492. override class func _realmColumnNames() -> [String: String] {
  493. return ["linkA": "link 1", "linkB": "link 2", "array1": "array"]
  494. }
  495. }
  496. class LinkToSwiftRenamedProperties2: Object {
  497. @objc dynamic var linkC: SwiftRenamedProperties1?
  498. @objc dynamic var linkD: SwiftRenamedProperties2?
  499. let array2 = List<SwiftRenamedProperties2>()
  500. override class func _realmObjectName() -> String { return "Link To Swift Renamed Properties" }
  501. override class func _realmColumnNames() -> [String: String] {
  502. return ["linkC": "link 1", "linkD": "link 2", "array2": "array"]
  503. }
  504. }