Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Realm iOS Code Review

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Realm iOS Code Review

Avatar for USAMI Kosuke

USAMI Kosuke

March 26, 2017
Tweet

More Decks by USAMI Kosuke

Other Decks in Programming

Transcript

  1. ରॲํ๏ » ҎԼͷͲΕ͔Ͱରॲ͢Δ » (1) ϑΝΠϧͷஔ͖৔ॴΛม͑Δ » (1-a) defaultRealm ͷઃఆΛม͑Δ

    » (1-b) σϑΥϧτҎ֎ͷ Realm Λ࢖͏ » (2) ϑΝΠϧͷஔ͖৔ॴ͸ͦͷ··ͰɺόοΫΞοϓର৅͔Βআ֎
  2. Realm.Configuration var config = Realm.Configuration() config.fileURL = ... // (1-a)

    defaultRealm ͷઃఆΛม͑Δ Realm.Configuration.defaultConfiguration = config // (1-b) σϑΥϧτҎ֎ͷ Realm Λ࢖͏ let realm = try! Realm(configuration: config)
  3. όοΫΞοϓର৅͔Βআ֎ let realmURL = Realm.Configuration.defaultConfiguration.fileURL! let realmURLs = [ //

    ஫ҙɿର৅ϑΝΠϧ͸ Realm ͷόʔδϣϯʹΑΓมΘΔ realmURL, realmURL.appendingPathExtension("lock"), realmURL.appendingPathExtension("note"), realmURL.appendingPathExtension("management") ] // (2) όοΫΞοϓର৅͔Βআ֎ʢ஫ҙɿઌʹ Realm ΛҰ౓࡞੒͓ͯ͘͜͠ͱʣ realmURLs.forEach { fileURL in fileURL.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey) }
  4. ίϯύΫγϣϯͷॲཧ autoreleasepool { let realm = try! Realm() try! realm.writeCopy(toFile:

    tempURL) try! FileManager.default.removeItem(at: realmURL) try! FileManager.default.moveItem(at: tempURL, to: realmURL) }
  5. ThreadSafeReference Λ࢖͏ » ৽͍͠ํ๏ɺϓϥΠϚϦΩʔ͕ͳͯ͘΋ྑ͍ // ౉͢ଆ let personRef = ThreadSafeReference(to:

    person) // ड͚औΔଆ let realm = try! Realm() let person = realm.resolve(personRef)
  6. ิ଍ : Realm Πϯελϯεͷऔಘ » let realm = try! Realm()

    ͸ඞཁͳ࣌ʹͦͷ౎౓࣮ߦͯ͠ྑ͍ » ֤ϝιουͰߦ͏ » ֤ΫϩʔδϟͰߦ͏ » ίετ͕͔͔ΔॲཧͰ͸ͳ͍ » realm Λڞ༗ͯ͠࢖͓͏ͱ͢Δͱ͔͑ͬͯ໘౗