拙作dandoriのswift移行中、中々進みません。
Objective-Cで使っていた、filteredArrayUsingPredicate が Swiftでは簡略化。.filterメソッドを使い、ブロックで処理を書き込みます。。。
ブロック表記が出てくると目が点になってしまう私。。。
以下 Objective-C での表記
NSArray *myTasks = [[NSArray alloc] initWithArray:[event.tasks allObjects]];
NSPredicate *hotPredicate = [NSPredicate predicateWithFormat:@"isRedHot == YES"];
NSArray *filteredArray = [myTasks filteredArrayUsingPredicate:hotPredicate];
return [filteredArray count] > 0;
Swiftで書き上げにはブロック内に(user: UserDetails) -> Bool in
で書き込む方法もあり試すもエラーがでる。。あーーー、ブロック、、意味わからん。。。しかし、救いの神のNSPredicateを使った場合は以下、随分スッキリします。(こっちの方が全然良いわ。。 $0.isRedHot = "YES"
何じゃかんじゃより。。)書き上げるとこんな感じ。
let myTasks = tasks?.allObjects
let predicate = NSPredicate(format: "isRedHot == YES")
let filteredArray = myTasks?.filter( {
predicate.evaluateWithObject($0)
} )
return filteredArray!.count > 0