2015-02-11 12 views
5

Zunächst einmal, ich weiß ähnliche Fragen wurden zuvor gestellt und ich habe versucht, den Rat von this Stackoverflow Antwort hier ohne Erfolg zu beantworten. Ich habe auch versucht, den grundlegenden Kern dieser als Kommentar hinzuzufügen, aber ich habe noch nicht genug rep :(Grundsätzlich versuche ich PFSubclassing zu verwenden, um Parse PFUser Modell zu erweitern. Als solche, hier ist meine entsprechende Code:Subsklassing Parse PFUser in Swift

Benutzer .swift:

import Foundation 
import CoreLocation 

class User : PFUser, PFSubclassing { 

    override init() { 
     super.init() 
    } 

    convenience init(email: String!) { 
     self.init() 

     self.email = email 
     self.username = email 

    } 

    // don't need to call User.registerSubclass() in AppDelegate because this 
    // is handling that here 
    override class func load() { 
     self.registerSubclass() 
    } 

    // Commented out because this is extending PFUser 
    // override class func parseClassName() -> String! { 
    //  return "PFUser" 
    // } 
} 

Ergebnis auf Tests:

-[PFObject _loadSensitiveUserDataFromKeychainItemWithName:]: unrecognized selector sent to instance 0x7f98ebc1c250 

ich auch die folgenden in meinem Bridging-Kopf tun:

#import <Parse/Parse.h> 
#import <Parse/PFObject+Subclass.h> 

Wenn ich un-Kommentar „parseClassname() in User.swift“ Ich bekomme:

failed: caught "NSInvalidArgumentException", "Cannot initialize a PFUser with a custom class name." 

Was mich führt zu glauben, dass die Schnittstellen der Einrichtung zumindest teilweise zu arbeiten.

Basierend auf all den Ratschlägen, die ich gesehen habe, kann ich nicht herausfinden, was ich falsch mache. Es gibt auch eine open bug, die die gleiche Fehlermeldung erzeugt, aber sie wird verursacht, indem man den lokalen Datenspeicher von Parse benutzt und ich habe nichts davon konfiguriert.

An diesem Punkt fühle ich mich, als ob ich etwas totes offensichtlich vermisse, oder ich bin von dem gleichen Fehler betroffen, wie oben erwähnt. Irgendwelche Vorschläge?

Antwort

4

Okay, löste mein eigenes Problem hier durch Versuch und Irrtum. Im Wesentlichen sieht es so aus, als ob ein zwischengespeicherter, angemeldeter PFUser Probleme verursacht. Wenn Parse zuerst geladen wurde, wurde der eingeloggte Zustand vom Emulator geladen, der mit der neu registrierten Benutzer-Unterklasse in Konflikt stand.

Um dies zu beheben, können Sie entweder:

  1. Starten Sie den Emulator.
  2. Rufen Sie PFUser.logOut() direkt nach Parse.setApplicationId() in AppDelegate, um den zwischengespeicherten Benutzer zu leeren.

Hoffentlich hilft dies jemand anderen in Zukunft!

+2

Ich versuche auch, 'PFUser' Unterklasse. erhalten Sie Ihre Unterklasse, wenn Sie 'User.currentUser()' aufrufen? weil ich einen 'PFUser' bekomme. –

0

Ich löste dieses Problem, indem ich den ursprünglichen Ansichtscontroller änderte. Der Benutzer wurde nicht registriert, da er nicht durch den Ansichtscontroller geleitet wurde, der zuvor angegeben/identifiziert hat, wer der Benutzer war.

Was ich gesagt habe:

  1. den anfänglichen View-Controller Set für den Controller, wer der Benutzer ist und dann segue Ihren Weg vorbei fängt an, wo Sie sein möchten.
  2. Starten Sie den Simulator neu.
Verwandte Themen