LoginSignup
18
19

More than 5 years have passed since last update.

PFObjectをSwiftでサブクラス化したる

Posted at

半年前にリジェクトされたまま放置していたアプリを、Swiftでつくりなおすことにした。
このアプリはParseを使用してるので、忘れやすそうなやつをメモしたった。

SDKバージョン

v1.6.4

サブクラス化?

これなんだけど、サブクラス化すると下記みたいに使いやすくなったりする。

こんなやつを

PFObject
var shield = PFObject(className:"Armor")
shield["displayName"] = "Wooden Shield"
shield["fireProof"] = false
shield["rupees"] = 50

こんな感じに使えるようにする

Subclass
var shield = Armor()
shield.displayName = "Wooden Shield"
shield.fireProof = false
shield.rupees = 50

他にもクエリをこのサブクラス内に書くといいかも。

サブクラスにするには

こんな感じでクラスをつくりまーす

Hoge.swift
import Parse

class Hoge : PFObject, PFSubclassing {

  @NSManaged var foo: String

  override class func initialize() {
    var onceToken : dispatch_once_t = 0;
    dispatch_once(&onceToken) {
      self.registerSubclass()
    }
  }

  class func parseClassName() -> String! {
    return "Hoge"
  }
}

initializeを呼んだりまーす

AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

  // 省略

  Hoge.initialize()

  // 省略
}

これで準備はokokです

じゃあ、使うか

たとえば、Hogeテーブルのfooを全てって時は、こんな感じかな

FugaViewController.swift
let query = Hoge.query()
query.fromLocalDatastore()
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
  if error == nil {
    for hage in objects {
      println((hage as Hoge).foo)
    }
  }
}

おしまい

18
19
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
18
19