如何使用swift中的dbAccess特定字段更新多条记录

时间:2016-07-20 13:13:09

标签: ios iphone swift orm dbaccess

我想更新多条记录(DBAccess ORM)。具有特定字段的条件。喜欢set city =" Goa"其中name =" atul"。

请查看以下快速代码,它运行正常。但是如何通过单个查询来执行此操作而不使用for循环。

func updateRecordsByName(userName: String) {

    //like userName = atul;
    let userArr : DBResultSet = User.query().whereWithFormat("name = %@", withParameters:[userName]).fetch();

    for data in userArr {

        (data as! User).city = "Goa";

        (data as! User).commit();
    }
}

请建议完美的解决方案,以减少行数/循环次数并改进上述查询代码。

1 个答案:

答案 0 :(得分:0)

除了执行本身就很危险的原始SQL之外,没有办法,特别是当缓存和打开的对象不知道SQLite中已更新的值时。

循环对象有问题吗?如果是性能,那么将更新包装在事务中,这将加快它的速度。

    DBTransaction.transaction({ 
         // put all your writes here

         for data in userArr {
             (data as! User).city = "Goa";
             (data as! User).commit();
         }
    }) { 
         // rollback
    }

同样升级到SharkORM,因为它已经从DBAccess接管了:

http://sharkorm.comhttps://github.com/sharksync/sharkorm

如果需要,您可以随时向查询模块添加更新功能。或者通过问题提出功能请求。