1
我正在使用Parse並創建了PFObject的子類。創建對象時,它使事情變得更容易。創建對象後,我正在試驗查詢數據庫並訪問我創建的自定義屬性。我發現的是,當我正在處理從查詢返回的PFObjects時,我無法使用點符號來訪問屬性。這是正常的嗎?從查詢中訪問PFObject子類屬性
這是我創建的子類。
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。
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)
}
})
如果這是正常的,那很好。我只是想確保我不會錯過任何東西。
保重,
喬恩