Parse platform 从查询访问PFObject子类属性

Parse platform 从查询访问PFObject子类属性,parse-platform,properties,Parse Platform,Properties,我正在使用Parse并创建了PFObject的一个子类。当创建对象时,它使事情变得更容易。创建对象后,我将尝试查询数据库和访问我创建的自定义属性。我发现,在处理从查询返回的PFObjects时,无法使用点表示法访问属性。这正常吗 这是我创建的子类 import Foundation import UIKit import Parse class MessagePFObject: PFObject { @NSManaged var messageSender : String @

我正在使用Parse并创建了PFObject的一个子类。当创建对象时,它使事情变得更容易。创建对象后,我将尝试查询数据库和访问我创建的自定义属性。我发现,在处理从查询返回的PFObjects时,无法使用点表示法访问属性。这正常吗

这是我创建的子类

import Foundation
import UIKit
import Parse

class MessagePFObject: PFObject
{
    @NSManaged var messageSender : String
    @NSManaged var messageReceiver : String
    @NSManaged var messageMessage : String
    @NSManaged var messageSeen : Bool
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    // Custom Query method.
    override class func query() -> PFQuery?
    {
        let query = PFQuery(className: MessagePFObject.parseClassName())
        query.includeKey("user")
        query.orderByDescending("createdAt")

        return query
    }

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


    init(messageSenderInput: String?, messageReceiverInput: String?, messageMessageInput: String?)
    {

        super.init()

        self.messageSender = messageSenderInput!
        self.messageReceiver = messageReceiverInput!
        self.messageMessage = messageMessageInput!
        self.messageSeen = false     
    }

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    override init()
    {
        super.init()
    }
}

//++++++++++++++++++++++++++++++++++++ EXTENSION +++++++++++++++++++++++++++++++++++++++++++++++++++

extension MessagePFObject : PFSubclassing
{
    class func parseClassName() -> String
    {
        return "MessagePFObject"
    }

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    override class func initialize()
    {
        var onceToken: dispatch_once_t = 0
        dispatch_once(&onceToken) {
            self.registerSubclass()
        }
    }
}
这是我的查询以及访问属性所需的操作。createdAt、updatedAt等都可以使用点表示法,但我的自定义属性都不可用。您可以看到我使用element.objectForKey(“messageSeen”)访问messageSeen

如果这是正常的,那就好了。我只是想确定我没有错过什么

保重,


Jon

您的对象子类必须实现
PFSubclassing
协议,您需要在应用程序委托中调用
MessagePFObject.registerSubclass()


解析文档非常好:

您的对象子类必须实现
PFSubclassing
协议,并且您需要在应用程序委托中调用
MessagePFObject.registerSubclass()

解析文档非常好:

let predicate = NSPredicate(format: "messageSender == %@ OR messageReceiver == %@", self.currentUser!.username!, self.currentUser!.username!)
        let query = messagePFObject.queryWithPredicate(predicate)
        query!.findObjectsInBackgroundWithBlock ({ (objects, error) -> Void in

            if error == nil && objects!.count > 0
            {
                for element in objects!
                {
                    print(element)
                    print(element.parseClassName)
                    print(element.objectId)
                    print(element.createdAt)
                    print(element.updatedAt)
                    print(element.objectForKey("messageSeen"))
                }
            }
            else if error != nil
            {
                print(error)
            }
        })