如何使用swift在parse.com中检索模型

时间:2015-01-03 22:13:12

标签: ios swift parse-platform models

我正在使用swift和parse.com开发一个应用程序,但是我对应用程序的模型有疑问。

我有一个包含类别类的事件类。

这是我的类别类:

class Category  : PFObject, PFSubclassing{

override class func load() {
    self.registerSubclass()
}

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

var nameCategory:String="";
var image:String="";

private let KeyName:String = "label";
private let KeyImage:String = "image";

func fromPFObject(object:PFObject)->Category{

    self.nameCategory = object[self.KeyName] as String;
    self.image = object[self.KeyImage] as String;

    return self;
}

这是我的活动类:

class Event {

//Variables de classe
var name:String;
var category:Category;

// Descripteur de colone en base
private let KeyEventName:String = "event_name";
private let KeyCategory:String = "category";

func insert(){

    var event = self.toPFObject()

    event.saveInBackgroundWithBlock {
        (success: Bool!, error: NSError!) -> Void in
        if (success != false) {
            println("Object created with id: \(event.objectId)")
            self.id = event.objectId;
        } else {
            println(error)
        }
    }
}


func select(id:String){
    var query = PFQuery(className: self.KeyClassName)

    query.getObjectInBackgroundWithId(id) {
        (event: PFObject!, error: NSError!) -> Void in
        if (error == nil) {

            self.fromPFObject(event);
        } else {
            println(error)
            self.eventKO("Une erreur c'est produite");
        }
    }
}

func toPFObject()->PFObject{

    var event = PFObject(className: self.KeyClassName)

    event[self.KeyCategory] = self.category;
    event[self.KeyEventName] = self.name


    return event;
}

func fromPFObject(event:PFObject)->Event{

    self.activ = event[self.KeyActif] as Int;

    var test = event[self.KeyCategory] as PFObject;
    var label = test["label"] as String;

    self.category = event[self.KeyCategory] as Category;
    self.name = event[self.KeyEventName] as String;


    return self;
}

我很好地检索了事件的名称而不是类别。我在模特中遗漏了一些东西。

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我发现直接使用对象而不是子类化更简单。

只需在课程中引用属性,如下所示:

// non optional of type String that defaults to an empty string
let firstName = object["firstName"] as? String ?? ""

如果你有链接类,例如如果Category是您引用的另一个类,则以下工作干净利落

if let category = object["category"] as? PFObject {
  let name = category["name"] as? String ?? ""
}

同样,不需要为简单对象子类化所有内容。

我已经使用这种模式来填充PFQueryTableViewControllers,自定义表格,自定义视图等。