LoginSignup
4
4

More than 5 years have passed since last update.

Swift+Parseで#mapをキメる

Last updated at Posted at 2014-06-16

Swiftでは#mapがあります。
というわけでParseで受け取ったオブジェクトを#mapしたくなりますね。

Swiftの神キャストに期待して安直に書くと…

someParse.swift
var messages : Message[]!
let query = PFQuery(className: "Message")
query.whereKey("user", equalTo: PFUser.currentUser())
query.findObjectsInBackgroundWithBlock {(objects : AnyObject[]!, error: NSError!) in
    messages = objects.map {(message: PFObject!) in Message(text: message["text"], sender: message["sender"], ...)}
}

こんな感じに出来そうに見えますが出来ません。
まず、message: PFObject で型不一致で引っ掛かり、o["text"] がAnyObject で返ってくるので Message の init でも型不一致で死にます。

というわけで、こんな感じに明示的なキャストを駆使することでParseで#mapをキメることが出来ます。

someParse.swift
var messages : Message[]!
let query = PFQuery(className: "Message")
query.whereKey("user", equalTo: PFUser.currentUser())
query.findObjectsInBackgroundWithBlock {(objects : AnyObject[]!, error: NSError!) in
    messages = (objects as PFObject[]).map {(message: PFObject) in Message(text: message["text"] as String, sender: message["sender"] as String, ...)}
}

関係ないですが静的言語を書くのに疲れたので、RubyMotionをキメたくなってきました。

4
4
0

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
4
4