0 0
Read Time:23 Second

現在の会社に入社以来、大部分はAPIの設計、実装、お守りなどサーバーサイド的なことしかしていないので、クライアント寄りな仕事もしてみたくなってるkimikatoです。
お久しぶりです。
先月末ぐらいからSwift 2.0でのプログラミングを始めました。

さて、配列に入ったデータをランダムにシャッフルしたかったのでググってみたわけですが、参考リンク先のコードでは下記のようなエラーが発生して使えなかったので修正してみました。

Result of call to non-mutating function ‘sort’ is unused; use ‘sortInPlace’ to mutate in-place

環境

OS X
OS X El Capitan ( 10.11.1 )
Xcode
Version 7.1 (7B91b)
Swift
2.0

コード

//
//  ArrayExtension.swift
//  ArrayShuffleTest
//
//  Created by Kiminori Kato on 2015/11/03.
//  Copyright © 2015年 Kiminori Kato. All rights reserved.
//

import Foundation


extension Array {
    mutating func shuffle(count: Int) {
        for _ in 0..

実行例

Arrayy型の場合

var arrayList: [String] = []
arrayList = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

// シャッフル前の配列
print(arrayList.joinWithSeparator(","))  // => 1,2,3,4,5,6,7,8,9,10

// 1回目のシャッフル
arrayList.shuffle(arrayList.count)
print(arrayList.joinWithSeparator(","))  // => 6,1,8,5,3,9,2,4,7,10

// 2回目のシャッフル
arrayList.shuffle(arrayList.count)
print(arrayList.joinWithSeparator(","))  // => 9,8,1,10,5,6,2,3,4,7

NSMutableArray型の場合

var result: String = ""
var arrayList: NSMutableArray = []
arrayList = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]

// シャッフル前の配列
result = (arrayList as NSArray as! [String]).joinWithSeparator(",")
print(result)  // => 1,2,3,4,5,6,7,8,9,10

// 1回目のシャッフル
arrayList.shuffle(arrayList.count)
result = (arrayList as NSArray as! [String]).joinWithSeparator(",")
print(result)  // => 10,4,1,2,5,7,3,6,8,9

// 2回目のシャッフル
arrayList.shuffle(arrayList.count)
result = (arrayList as NSArray as! [String]).joinWithSeparator(",")
print(result)  // => 5,1,8,6,9,4,10,2,3,7

最後に

kiiitaさん、ありがとうございます。

参考リンク

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %
Previous post Contact Form 7の自動送信メールに連番を付与するプラグイン「Contact Form 7 Serial Numbers」をアップデートしました
Next post Raspberry Pi Zero Starter Pack が到着した! #pizero

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。