Swift: 配列をシャッフルする extension のサンプルコード

アプリ制作において、ジャンルを問わず配列をシャッフルする必要がある場面に遭遇することは多いかと思います。

今回は Swift の extension を使って配列内の値をシャッフルする方法を実装したいと思います。

配列をシャッフルする extension のサンプルコード

File -> New -> File…で ShuffleExtension.swift ファイルを作成し、以下の NSMutableArray のエクステンションを記述します。(※このエクステンションを直接 ViewController 側へ記述しても問題ありません)

ShuffleExtension.swift

import Foundation

extension NSMutableArray {
    func shuffle(count: Int) {
        for i in 0..<count {
            var nElements: Int = count - i
            var n: Int = Int(arc4random_uniform(UInt32(nElements))) + i
            self.exchangeObjectAtIndex(i, withObjectAtIndex: n)
        }
    }
}
[/code]

<h3>使い方</h3>

ViewController に MutableArray 型の配列を定義し、その配列に対して shuffle(配列の数)を実行します。

<h3>ViewController.swift</h3>
[code]
import UIKit

class ViewController: UIViewController {

    var exampleArray: NSMutableArray = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        exampleArray = ["hoge", "huga", "piyo"]
        exampleArray.shuffle(exampleArray.count)
        
        println(exampleArray[0])
        println(exampleArray[1])
        println(exampleArray[2])
    }
}

結果

配列内がシャッフルされているのが確認できます。

huga
piyo
hoge

まとめ

Swift のエクステンションは大変便利ですが、乱用し過ぎてコードの可読性や保守性に問題が出ないようなルールや設計を心がけたいものです。

この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから

Related Contents

Pickup Contents