AppDelegate.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 UIKit
  19. import RealmSwift
  20. class Dog: Object {
  21. @objc dynamic var name = ""
  22. @objc dynamic var age = 0
  23. // Define "owners" as the inverse relationship to Person.dogs
  24. let owners = LinkingObjects(fromType: Person.self, property: "dogs")
  25. }
  26. class Person: Object {
  27. @objc dynamic var name = ""
  28. let dogs = List<Dog>()
  29. }
  30. #if !swift(>=4.2)
  31. extension UIApplication {
  32. typealias LaunchOptionsKey = UIApplicationLaunchOptionsKey
  33. }
  34. #endif
  35. @UIApplicationMain
  36. class AppDelegate: UIResponder, UIApplicationDelegate {
  37. var window: UIWindow?
  38. func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
  39. window = UIWindow(frame: UIScreen.main.bounds)
  40. window?.rootViewController = UIViewController()
  41. window?.makeKeyAndVisible()
  42. do {
  43. try FileManager.default.removeItem(at: Realm.Configuration.defaultConfiguration.fileURL!)
  44. } catch {}
  45. let realm = try! Realm()
  46. try! realm.write {
  47. realm.create(Person.self, value: ["John", [["Fido", 1]]])
  48. realm.create(Person.self, value: ["Mary", [["Rex", 2]]])
  49. }
  50. // Log all dogs and their owners using the "owners" inverse relationship
  51. let allDogs = realm.objects(Dog.self)
  52. for dog in allDogs {
  53. let ownerNames = dog.owners.map { $0.name }
  54. print("\(dog.name) has \(ownerNames.count) owners (\(ownerNames))")
  55. }
  56. return true
  57. }
  58. }