29776


「画像を指定のサイズになるまで圧縮する」という処理をするために、下のURLに載っているコードをSwift2.3で使っていたのですが、Cスタイルのfor文(No.1)をSwift3.0に書き直そうとしたところ、エラーが出ました(No.3)。

CGFloatの値でfor in文をつくるにはどうすればいいのでしょうか？

<http://seeku.hateblo.jp/entry/2016/03/06/193628>

No.1 画像を指定のサイズになるまで圧縮するfor文

[code]

    for qualityUse = qualityMax; qualityUse >= qualityMin; qualityUse -= qualityDif {
        let data = UIImageJPEGRepresentation(resize, qualityUse)
        if checkDataSize(data) {
        return data
        }
      }
    
[/code]

No.2 swift3.0で書き直したコード

[code]

        for qualityUse in qualityMax...qualityMin as [CGFloat]{
            qualityUse -= qualityDif
            let data = UIImageJPEGRepresentation(resize, qualityUse)
            if checkDataSize(data) {
                return data
            }
        }
    
[/code]

No.3 No.2に対して出たエラー

[code]

        No '...' candidates produce the expected contextual result type '[CGFloat]'
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/poRzf.png)](https://i.stack.imgur.com/poRzf.png)


CC BY-SA 3.0
2016-10-21T11:48:38.360
29775
2016-10-21T12:02:34.953
18443
question
swift3
CGFloatのfor in文


やりたいことを実現できるのは下記のコードじゃないかと思いますが、いかがでしょうか？

[code]

    for qualityUse in stride(from: qualityMax, to: qualityMin, by: -qualityDif) {
        let data = UIImageJPEGRepresentation(resize, qualityUse)
        if checkDataSize(data) {
            return data
        }
    }
    
[/code]


CC BY-SA 3.0
2016-10-21T12:02:34.953
29776
2016-10-21T12:02:34.953
5519
29775
answer