2017-08-18 1 views
0

J'essaie d'utiliser Parse PFUser dans un logiciel pour bureau OSX. Lorsque j'essaie de l'utiliser PFUser.query() il donne un message: Failed to set (contentViewController) user defined inspected property on (NSWindow): The class PFUser must be registered with registerSubclass before using Parse.Parse PFUser n'enregistre pas de sous-classe

Il se passe sans enregistrer la classe.

Je l'ai essayé l'enregistrement de la classe de cette façon: PFUser.registerSubclass() mais il ne fonctionne toujours pas.

Je vais utiliser la valeur par défaut PFUser sans ajouter de champs, donc je ne pas besoin de créer une classe personnalisée pour être mon PFUser.

J'ai essayé d'utiliser PFUser.enableAutomaticUser() sans succès

code

ci-dessous:

AppDelegate.swift

import Cocoa 

import Parse 
import Bolts 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 

    let APP_ID = "app_id" 
    let CLIENT_KEY = "client_key" 
    let SERVER = "https://parseserver.com/" 

    func applicationDidFinishLaunching(_ aNotification: Notification) { 

     PFUser.registerSubclass() 

     let configuracaoParse = ParseClientConfiguration { 
      $0.applicationId = self.APP_ID 
      $0.clientKey = self.CLIENT_KEY 
      $0.server = self.SERVER 
     } 

     Parse.initialize(with: configuracaoParse) 
    } 

    func applicationWillTerminate(_ aNotification: Notification) { 
     // Insert code here to tear down your application 
    } 
} 

ViewController.swift

import Cocoa 

import Parse 

class ViewController: NSViewController { 

    @IBOutlet weak var emailTextField: NSTextField! 
    @IBOutlet weak var senhaSecureTextField: NSSecureTextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     contaUsuarios() 
    } 

    override var representedObject: Any? { 
     didSet { 
     // Update the view, if already loaded. 
     } 
    } 

    @IBAction func entrarButtonClicked(_ sender: NSButton) { 

    } 

    func contaUsuarios() { 

     let query = PFUser.query() 

     query?.countObjectsInBackground(block: { 
      (count, error) -> Void in 

      let numeroUsers = Int(UInt32(count)) 

      if numeroUsers > 0 { 

      } 

      print(numeroUsers) 
     }) 
    } 
} 

Répondre

0

En lisant le contenu sur Internet j'ai découvert que dans OSX le ViewController est lancé bef Si l'AppDelegate termine le chargement, j'ai initialisé la connexion Parse et le sous-classement dans le ViewController's viewDidLoad au lieu de AppDelegate et cela fonctionne très bien.