2015-02-11 6 views
5

में पार्स के पीएफयूसर को उप-वर्गीकरण करना सबसे पहले, मुझे पता है कि पहले से ही इसी तरह के प्रश्न पूछे गए हैं और मैंने this स्टैक ओवरफ्लो उत्तर की सलाह का पालन करने का कोई प्रयास नहीं किया है। मैंने इस बारे में मूलभूत जानकारी को एक टिप्पणी के रूप में जोड़ने का भी प्रयास किया, लेकिन मेरे पास अभी तक पर्याप्त प्रतिनिधि नहीं है :(असल में मैं पार्स के पीएफयूसर मॉडल का विस्तार करने के लिए पीएफएसबक्लासिंग का उपयोग करने की कोशिश कर रहा हूं। इस प्रकार, मेरा संगत कोड है:स्विफ्ट

उपयोगकर्ता .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" 
    // } 
} 

परिणाम:

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

मैं अपने में निम्नलिखित कर रहा हूँ ब्रिजिंग-हैडर:

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

अगर मैं संयुक्त राष्ट्र-टिप्पणी "parseClassname() User.swift में" मैं मिलता है:

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

कौन सा मुझे विश्वास है कि इंटरफेस की स्थापना कम से कम आंशिक काम कर रहा है।

मैंने जो सलाह दी है, उसके आधार पर, मुझे यह पता लगाना प्रतीत नहीं होता कि मैं क्या गलत कर रहा हूं। एक open bug भी है जो एक ही त्रुटि संदेश उत्पन्न करता है, लेकिन यह पार्स के स्थानीय डेटा स्टोर का उपयोग करके होता है और मैंने इनमें से कोई भी कॉन्फ़िगर नहीं किया है।

इस बिंदु पर मुझे लगता है कि मुझे कुछ मृत याद आ रही है, या मैं उपरोक्त वर्णित उसी बग से प्रभावित हूं। कोई सुझाव?

उत्तर

4

ठीक है, परीक्षण और त्रुटि के माध्यम से यहां मेरी अपनी समस्या हल हो गई है। अनिवार्य रूप से ऐसा लगता है कि पीएफयूसर में एक कैश लॉग इन समस्याएं पैदा कर रहा था। जब पार्स प्रारंभ में लोड होता था तो यह लॉग इन राज्य को एमुलेटर से लोड कर रहा था जो नए पंजीकृत उपयोगकर्ता सबक्लास के साथ संघर्ष कर रहा था।

इस आप या तो ठीक करने के लिए:

  1. पुनः प्रारंभ एमुलेटर।
  2. कैश किए गए उपयोगकर्ता को फ्लश करने के लिए AppDelegate में Parse.setApplicationId() के ठीक बाद Par12.setApplicationId() के बाद PFUser.logOut() पर कॉल करें।

उम्मीद है कि यह भविष्य में किसी और की मदद करेगा!

+2

मैं भी 'पीएफयूसर' उपclass करने की कोशिश कर रहा हूं। जब आप 'User.currentUser()' को कॉल करते हैं तो क्या आप अपना सबक्लास प्राप्त करते हैं? क्योंकि मुझे 'पीएफयूसर' मिल रहा है। –

0

मैंने प्रारंभिक दृश्य नियंत्रक को बदलकर इस समस्या को हल किया। इसने उपयोगकर्ता को पंजीकृत नहीं किया क्योंकि यह दृश्य नियंत्रक के माध्यम से नहीं गया था जो पहले बताया गया था कि उपयोगकर्ता कौन था।

मैं विशेष रूप से क्या किया:

  1. नियंत्रक कि कब्जा है जो उपयोगकर्ता है और फिर तुम कहाँ होना चाहता हूँ के लिए अपना रास्ता अतीत segue के आरंभिक दृश्य नियंत्रक, सेट करें।
  2. सिम्युलेटर को पुनरारंभ करें।