2017-01-13 3 views
3

Я использую Realm в моем проекте, и я хочу знать, является ли метод realm.write() синхронным или нет. Мой пример здесь:Swift Realm Write метод Sync или Async Thread

let realm = try! Realm() 
    try! realm.write { 
     realm.delete(message) 
    } 
    realm.invalidate() 

В приведенном выше примере, я удалить объект царством и вне скобок я пишу invalidate()

Вот моя путаница:

  1. Если write() является синхронно, то invalidate() в порядке

  2. И если Async, чем раньше, пишет inva lidate позвонит, и область выпустит, но операция выполняется в фоновом режиме

Благодарность

ответ

-2

метода вы пишете синхронный метод, как вы не указали очередь фона для него. Цель метода Invalidate()

функ Invalidate() Описание Аннулирует все объекты, результаты, LinkingObjects, и списки, управляемые Realm. В Realm хранится блокировка чтения на версии данных, к которым осуществляется доступ, так что изменения, внесенные в Realm в разные потоки, не изменяют или не удаляют данные, видимые этим Королевством. Вызов этого метода освобождает блокировку чтения, позволяя использовать пространство, используемое на диске, для более поздней записи транзакций, а не для увеличения файла. Этот метод следует вызвать перед выполнением длинных операций блокировки в фоновом потоке, на котором вы ранее читали данные из Царства, которые вам больше не нужны. Все экземпляры объектов, результатов и списка, полученные из этого экземпляра Realm в текущем потоке, являются недействительными. Объекты и массивы не могут использоваться. Результаты станут пустыми. Само Царство остается в силе, и новая транзакция чтения неявно начинается в следующий раз, когда данные считываются из Царства. Вызов этого метода несколько раз подряд без чтения каких-либо данных из Realm или до того, как он будет когда-либо читать данные из Realm, является no-op. Этот метод не может быть вызван в режиме только для чтения.