1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //: To get this Playground running do the following:
- //:
- //: 1) In the scheme selector choose RealmSwift > iPhone 6s
- //: 2) Press Cmd + B
- //: 3) If the Playground didn't already run press the ▶︎ button at the bottom
- import Foundation
- import RealmSwift
- //: I. Define the data entities
- class Person: Object {
- dynamic var name = ""
- dynamic var age = 0
- dynamic var spouse: Person?
- let cars = List<Car>()
- override var description: String { return "Person {\(name), \(age), \(spouse?.name)}" }
- }
- class Car: Object {
- dynamic var brand = ""
- dynamic var name: String?
- dynamic var year = 0
- override var description: String { return "Car {\(brand), \(name), \(year)}" }
- }
- //: II. Init the realm file
- let realm = try! Realm(configuration: Realm.Configuration(inMemoryIdentifier: "TemporaryRealm"))
- //: III. Create the objects
- let car1 = Car(value: ["brand": "BMW", "year": 1980])
- let car2 = Car()
- car2.brand = "DeLorean"
- car2.name = "Outatime"
- car2.year = 1981
- // people
- let wife = Person()
- wife.name = "Jennifer"
- wife.cars.append(objectsIn: [car1, car2])
- wife.age = 47
- let husband = Person(value: [
- "name": "Marty",
- "age": 47,
- "spouse": wife
- ])
- wife.spouse = husband
- //: IV. Write objects to the realm
- try! realm.write {
- realm.add(husband)
- }
- //: V. Read objects back from the realm
- let favorites = ["Jennifer"]
- let favoritePeopleWithSpousesAndCars = realm.objects(Person.self)
- .filter("cars.@count > 1 && spouse != nil && name IN %@", favorites)
- .sorted(byProperty: "age")
- for person in favoritePeopleWithSpousesAndCars {
- person.name
- person.age
- guard let car = person.cars.first else {
- continue
- }
- car.name
- car.brand
- //: VI. Update objects
- try! realm.write {
- car.year += 1
- }
- car.year
- }
- //: VII. Delete objects
- try! realm.write {
- realm.deleteAll()
- }
- realm.objects(Person.self).count
- //: Thanks! To learn more about Realm go to https://realm.io
|