2015-12-25 83 views
0

我填充.realm文件其他地方&現在我想用它作爲數據庫。爲了縮短這個故事,讓我們假設我完全遵循了the manual,除了它的'最後部分,這是可以治療的。預填充的領域不會被複制第一次啓動

問題是,當我第一次啓動應用程序,.realm文件沒有被複制,但是當我重新啓動應用程序(在模擬器/在真實設備上)後,它運行良好。

我嘗試引用the migration sample,說實話,它只是讓我更困惑,這顯然是爲什麼我在這裏尋求幫助。

這裏就是我錯了:

import RealmSwift 

func bundlePath(path: String) -> String? { 
    let resourcePath = NSBundle.mainBundle().resourcePath as NSString? 
    return resourcePath?.stringByAppendingPathComponent(path) 
} 
@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 
    var window: UIWindow? 

    func openRealm() { 
     let defaultPath = Realm.Configuration.defaultConfiguration.path! 
     if let v0Path = bundlePath("names.realm") { 
      do { 
       try NSFileManager.defaultManager().removeItemAtPath(defaultPath) 
       try NSFileManager.defaultManager().copyItemAtPath(v0Path, toPath: defaultPath) 
       print("Copied.") 
      } catch { 
      print("Wasn't copied.") 
      } 
     } 
    } 
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

openRealm() 

let realm = try! Realm() 
print("NamesCount: \(realm.objects(Names).count)") 

return true 
} 

感謝您的時間&閱讀本,現在請幫助我。爲什麼我看到

未被複制。 NamesCount:0

第一次啓動和

複製。 NamesCount:7

on second launch and on?

回答

2

你必須在另一個地方的問題;)

第一try trowing在第一次運行異常,因爲你沒有這個文件呢。在此之後不會調用copyItemAtPath。所以你有一個空白的默認領域文件,沒有數據之後。

func openRealm() { 
    let defaultPath = Realm.Configuration.defaultConfiguration.path! 
    if let v0Path = bundlePath("names.realm") { 
     if NSFileManager.defaultManager().fileExistsAtPath(defaultPath) { 
      do { 
       try NSFileManager.defaultManager().removeItemAtPath(defaultPath) 
       print("Remove old file") 
      } catch { 
       print("Wasn't removed") 
      } 
     } 
     do { 
      try NSFileManager.defaultManager().copyItemAtPath(v0Path, toPath: defaultPath) 
      print("Copied.") 
     } catch { 
      print("Wasn't copied.") 
     } 
    } 
}