2016-08-30 4 views
1

Я хочу установить NSURLIsExcludedFromBackupKey для моего файла realm. Причина в том, что я хочу исключить его из iCloud. У меня есть следующий код:Realm: настройка NSURLIsExludedFromBackupKey для файла realm

public class func configure() { 
    var config = Realm.Configuration() 

    config.fileURL = config.fileURL!.URLByDeletingLastPathComponent? 
     .URLByAppendingPathComponent("Test.realm") 

    do { 
     try config.fileURL?.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey) 

    } 
    catch { 
     print("Failed to set backupkey") 
    } 

    Realm.Configuration.defaultConfiguration = config 
} 

Однако функция всегда не может установить ключ. Я вообще не вижу проблемы, так как это простой do/catch. Любые рассуждения о том, почему это не работает?

+0

Имеется ли файл в этой точке? Можете ли вы поймать ошибку и посмотреть, что она говорит? –

+0

Ошибка: Файл «Test.realm» не существует. Как это возможно, это область, созданная только после запроса? – Hapeki

ответ

1

Ваш код в письменной форме не работает, поскольку вы можете применить атрибут NSURLIsExcludedFromBackupKey к файлу, который уже существует, и файлы Realm не создаются до тех пор, пока Realm не будет открыт. Вы можете задать это по-разному:

  1. Подождите, пока вы откроете Царство, затем примените этот атрибут к файлам Realm. Имейте в виду, что рядом с основным файлом Realm имеется несколько вспомогательных файлов, которые вы, вероятно, также хотите исключить.
  2. Создайте подкаталог для размещения вашего Царства и примените его к каталогу, чтобы исключить его и его содержимое. Это можно сделать до открытия Царства, а также позаботиться о вспомогательных файлах.
  3. Храните свое царство где-то, кроме каталога Документов. Если Realm не содержит пользовательских данных, которые, как я полагаю, имеет место, если вы не хотите его резервировать, возможно, каталог Caches станет для него более подходящим домом. Содержимое каталога Caches уже исключено из резервных копий пользователя.
+0

Это именно то, что мне нужно. Мне всегда было интересно, когда было создано Царство, но это все облегчает. Ясный ответ, спасибо! – Hapeki

2

Похоже, что ваш файл базы данных Realm еще не создан. Я думаю, что он создается либо после создания экземпляра Realm(), либо после вас write в Realm DB. Как только файл существует, вы можете исключить его из резервных копий.

+1

Альтернативным подходом может быть перемещение местоположения Realm в каталог вашего собственного создания и пометка каталога как исключенного из резервной копии. Это позволит вам позаботиться об этом исключении до открытия Царства. – bdash

+0

@bdash Мне нравится этот путь лучше, вы должны превратить это в ответ. –