Я использую Parse и создал подкласс PFObject. При создании объектов это упрощает работу. Когда объекты создаются, я экспериментирую с запросом базы данных и доступом к пользовательским свойствам, которые я создал. Я нахожу, что я не могу использовать точечную нотацию для доступа к свойствам, когда я работаю с PFObject, возвращаемыми из запроса. Это нормально?Доступ к свойствам подкласса 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 и т. д. доступны с точечной нотацией, но ни один из моих пользовательских свойств. Вы можете видеть, что я обращаюсь к messageSeen с помощью element.objectForKey ("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)
}
})
Если это нормально, это нормально. Я просто хочу убедиться, что я чего-то не упускаю.
Заботьтесь,
Jon