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