70100


### 実現したいこと

Realmを使って値をやり取りするアプリを作成しています。

Realmオブジェクトの特定の列の各値を一括で引き算したいと考えているのですが、  
for文を使うよりシンプルに？記述する方法を探しており、mapメソッドが使えるのではないかと考えています。

しかしながら、mapを使う場合の記述方法がわからず困っております。  
記述方法をご教示いただけないでしょうか。  
(そもそもmapメソッド使えないよ、ということでしたら、その旨ご指摘いただけると幸いです）

### 該当のコード

[code]

    //例えば以下の処理で、
    　let realm = try! Realm()
    　let n = 7
    　let results = realm.objects(Model.self).filter("number > %@" , n)
    
    //以下のResultsが得られるとします。
    /*
    　Results<Model> <> (
        [0] Model {
            id = 1234;
            number = 8;
        },
        [1] Model {
            id = 5678;
            number = 9;
        }
    )
    */
    
    //上記Resultsのnumber(Int)を一括で-１するために、以下をどのように記述すればよいかがわからずにおります
    let Test = results.map { (<#Model#>) -> U in
                    <#code#>
                }
    
    //以下の記述では狙いの結果は得られませんでした
    let Test = results.map { $0.listNumber - 1 }
    
[/code]

### その他

  * Swift5
  * Xcode11.6
  * Realm5.0.2


CC BY-SA 4.0
2020-09-02T15:57:53.903
70089
2020-09-03T04:52:05.567
2020-09-02T23:37:09.660
32986
question
swift realm
Realmオブジェクトの特定の列を一括で更新したい


forを使って普通に書くのが一番わかりやすいです。

[code]

    try! realm.write {
      for result in results {
        result.number = result.number - 1
      }
    }
    
[/code]

あえてmapのスタイルで書きたいのであれば、次のように書けます。

[code]

    try! realm.write {
      results.map {
        $0.number = $0.number - 1
      }
    }
    
[/code]

ちなみに下記のコードが期待通りに動かないのは値を代入していないからです。  
（プロパティを参照してその値から１を引き算した値をそのまま返しているだけ）

[code]

    results.map { $0.listNumber - 1 }
    
[/code]

ただ、戻り値が必要ならmapでいいですが、値を更新したいだけならmapよりforEachで書く方が意図がわかりやすいです。

[code]

    try! realm.write {
      results.forEach {
        $0.number = $0.number - 1
      }
    }
    
[/code]


CC BY-SA 4.0
2020-09-03T04:52:05.567
70100
2020-09-03T04:52:05.567
5519
70089
answer