LoginSignup
8

More than 5 years have passed since last update.

posted at

updated at

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

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)
}

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
What you can do with signing up
8