LoginSignup
8
8

More than 5 years have passed since last update.

SwiftでNSMutableArrayに追加したObjectをNSSortDescriptor使ってソートする

Last updated at Posted at 2015-03-08

Swift で NSMutableArrayに追加した Object を NSSortDescriptor 使ってソートします。

  • 作るオブジェクトは NSObject を継承します
  • 今回は、日付(NSDate)でソートします

Arrayの違い

  • NSArray:変更不可
  • NSMutableArray:変更可能

実際のSwiftのコード(元のNSMutableArrayを書き換え)

追記

tomohisaotaさんに指摘されて、もう少し調べてみました

import UIKit

class Memo:NSObject {
    var title = "無題"
    var created_at = NSDate()

    init(title:String) {
        self.title = title
    }
}

var _memos = NSMutableArray()

for key in 1...10 {
    var title = "繰り返し" + String(key)
    var memo  = Memo(title:title)
    _memos.addObject(memo)
}

let sort_descriptor1:NSSortDescriptor = NSSortDescriptor(key:"created_at", ascending:false)

_memos.sortUsingDescriptors([sort_descriptor1])

for key in 0...9 {
    var memo:Memo = _memos.objectAtIndex(key) as Memo
    println(memo.title)
}

実際のSwiftのコード(戻り値がArray)

import UIKit

class Memo:NSObject {
    var title = "無題"
    var created_at = NSDate()

    init(title:String) {
        self.title = title
    }
}

var _memos = NSMutableArray()

for key in 1...10 {
    var title = "繰り返し" + String(key)
    var memo  = Memo(title:title)
    _memos.addObject(memo)
}

let sort_descriptor:NSSortDescriptor = NSSortDescriptor(key:"created_at", ascending:false)
let sorts = [sort_descriptor]
let memos = _memos.sortedArrayUsingDescriptors(sorts) as NSArray

for key in 0...9 {
    var memo:Memo = memos.objectAtIndex(key) as Memo
    println(memo.title)
}
8
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8