2015-12-23 3 views
5

Я добавил Realm.framework и RealSwift.framework в проект. и «импорт Realm», хотя я получаю эту ошибку:Realm = RLMRealm 'не имеет статуса' setDefaultRealmPath '

RLMRealm»не имеет член„setDefaultRealmPath“

let directory: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.it.fancypixel.Done")! 
     let realmPath = (directory.path! as NSString).stringByAppendingPathComponent("db.realm") 
     RLMRealm.setDefaultRealmPath(realmPath) 

Любые идеи, которые я не могу показаться, чтобы увидеть решение для этого в любом месте быть это так ново ,

Заранее спасибо.

ответ

9

Realm (как библиотеки Swift, так и Objective-C) был обновлен до версии 0.97. В то время как setDefaultRealmPath был действительным API в прошлом, впоследствии он был устаревшим и с 0.97 полностью удален. Как таковой, если он работал в прошлом, как только вы обновляетесь до 0.97, теперь это приведет к ошибке сборки.

Настройка расположения файлов в реальном времени теперь осуществляется через Realm RLMRealmConfiguration объектов. Чтобы установить путь по умолчанию, вы должны сделать следующее:

let directory: NSURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.it.fancypixel.Done")! 
let realmPath = (directory.path! as NSString).stringByAppendingPathComponent("db.realm") 

var config = RLMRealmConfiguration.defaultConfiguration() 
config.path = realmPath 
RLMRealmConfiguration.setDefaultConfiguration(config) 

Сообщите мне, если вам нужно больше разъяснений!

+0

Ok большой это работает. Спасибо! Вы можете помочь мне понять, как он синхронизируется между устройствами. Я добавил realmToken = RLMRealm.defaultRealm(). AddNotificationBlock {note, realm в self.reloadEntries() }, хотя он регистрирует изменения на других моих устройствах при добавлении нового объекта области к другому устройству. –

+0

Удивительный! Рад слышать, что он работает! Нет, блоки уведомлений Realm не синхронизируются между устройствами; они обычно используются, когда вы изменяете объекты Realm в фоновом потоке и хотите получать уведомление об этом в другом месте приложения. Тем не менее, синхронизация между устройствами была поднята на нашей странице GitHub раньше. :) – TiM

1

Новый способ изменить путь Realm по умолчанию:

let directory: URL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.YOUR_BUNDLE_ID")! 
    let realmPath = directory.path.appending("db.realm") 
    let configuration = RLMRealmConfiguration.default() 
    configuration.pathOnDisk = realmPath 
    RLMRealmConfiguration.setDefault(configuration)