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

标签 ios swift parse-platform models

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

我有一个包含 Category 类的 Event 类。

这是我的类别类:

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

我很好地检索了事件的名称,但没有检索到类别。我在我的模型中遗漏了一些东西。

你有什么想法吗?

最佳答案

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

只需按如下方式引用您的类的属性:

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

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

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

同样,无需为简单对象的所有子类搞乱。

我已经使用这个模式来填充 PFQueryTableViewControllers、自定义表、自定义 View 等。

关于ios - 如何使用 swift 在 parse.com 中检索模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760082/

相关文章:

ios - 如何修复链接器命令因退出代码 1 错误而失败?

swift - Swift Chat客户端教程,具有Parse吗?

iphone - 应用程序在发送和接收特殊字符时崩溃

ios - 图像网格 iOS

iOS 如何确定阻止 UI 的内容

swift - 如何在 Swift 中减去 Double.pi 和 Float.pi?

ios - 来自其他 viewController 的 func 的值

ios - 有没有办法将 Observable.bind 和折叠之类的东西结合起来?

javascript - 解析.com 销毁解析数据库中的所有用户数据

ios - Parse.com 对 iOS 应用程序进行压力测试