2016-07-20 12 views
3

複数のレコード(DBAccess ORM)を更新したいとします。特定の分野の条件でset city = "Goa"のように、name = "atul"とします。更新する方法dbAccessの特定のフィールドを複数のレコードにスウィフトで

次のスウィフトコードを確認してください。正常に動作しています。しかし、どのように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(); 
    } 
} 

ライン/ループの数を減らし、上記のクエリコードを改善するための完璧なソリューションをご提案ください。

答えて

0

本質的に危険な生のSQLを実行することを除いて、特にキャッシュされた開いたオブジェクトがSQLiteで更新された値を知らない場合を除いて、方法はありません。

オブジェクトのループに問題はありますか?それがパフォーマンスの場合は、トランザクション内で更新をラップすると、それがスピードアップします。それが今DBACCESSから引き継いだとして

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

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

はまた、SharkORMにアップグレード:あなたが望んだ場合

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

あなたは常に、クエリモジュールにアップデート機能を追加することができます。または、問題を介して機能要求を提起する。

関連する問題