2015-10-24 21 views
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) 
      } 
     }) 

如果這是正常的,那很好。我只是想確保我不會錯過任何東西。

保重,

喬恩

回答