Удалить данные из FMDB, используя массив в Swift - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь удалить несколько строк из базы данных.В настоящее время у меня есть массив, который состоит из всех идентификаторов строк, которые я хочу удалить.Но я не могу найти подходящий код для этого

  func deleteMultiple(Id:[Int]) -> NSMutableArray {
    sharedInstance.databese!.open()

    var i:Int = Id.count
    print(Id, i)
    let resultSet:FMResultSet! = sharedInstance.databese!.executeQuery("DELETE FROM Info WHERE Id = ?", withArgumentsIn: Id)

    let itemInfo:NSMutableArray = NSMutableArray ()
    if (resultSet != nil)
    {
        while resultSet.next() {

            let item:Tbl_Info = Tbl_Info()
            item.Id = Int(resultSet.int(forColumn: "Id"))
            item.Name = String(resultSet.string(forColumn: "Name")!)
            item.LastName = String(resultSet.string(forColumn: "LastName")!)

            itemInfo.add(item)
        }
    }

    sharedInstance.databese!.close()
    return itemInfo

}

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете выполнить свой запрос в очереди, это не приведет к замораживанию базы данных.

, если во время транзакции произойдет сбой. FMDB Обеспечивает функцию отката.Посмотрите на пример кода.

sharedInstance.databese.dbQueue.inTransaction { db, rollback in
     idArray.forEach {id in
     do {
            let resultSet:FMResultSet! = try db.executeQuery("DELETE FROM Info WHERE Id = ?", withArgumentsIn: Id)
            //Do whatever with your resultSet
        } catch {
            //Error occured during deleting from database.
            rollback.pointee = true
        }
     }
  }
...