PFUser必须在registerSubclass iOS中注册

时间:2014-10-08 19:40:58

标签: ios objective-c parse-platform

我在通过Parse.com访问某项功能时遇到问题。当我为新视图运行查询时,我必须在RegisterSubclass'中注册' PFUser类。错误。问题是;这已经在应用代表中注册,因此我不确定是什么原因导致了这个问题。

有问题的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

[userClass registerSubclass];
[PFUser registerSubclass];

[Parse setApplicationId:@"<x>"
              clientKey:@"<x>"];


[PFTwitterUtils initializeWithConsumerKey:@"<x>" consumerSecret:@"<x>"];

[PFFacebookUtils initializeFacebook];



// Override point for customization after application launch.
return YES;
}

我得到的错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The class PFUser must be registered with registerSubclass before using Parse'

我尝试删除模拟器和设备上的应用程序,退出xcode,清除derived data文件夹,但似乎没有任何工作。

奇怪的是;当我注释掉registerSubclass部分时,视图会正常工作,但其他人不会,而是会抛出相同的错误。

这可能是合理的原因吗?

4 个答案:

答案 0 :(得分:0)

尝试移动[userClass registerSubclass];和[PFUser registerSubclass];在[PFFacebookUtils initializeFacebook]下;

我遇到了类似的问题,因为我在Parse setApplicationId之前运行解析代码......

答案 1 :(得分:0)

我想出了答案。

由于某种原因,应用程序不喜欢我为PFUser创建了一个子类,并在注册普通PFUser类的同时注册了它。我删除了这个类,重新路由了子类中的所有函数,现在它工作正常。

不确定为什么它现在会给我一个问题,但这就是为我解决问题的原因。

希望其他人能发现这有用。

答案 2 :(得分:0)

据我所知,不需要PFUser注册。这是我的工作应用程序的注册代码,后面是User类.h和.m文件的编辑版本。

[User               registerSubclass];
[Client             registerSubclass];
...
[Parse setApplicationId: kParseAppId
              clientKey: kParseClientKey];

·H

@interface User: PFUser<PFSubclassing>

// Links
@property (nonatomic, copy) NSString*  accountLink;
@property (nonatomic)       int        accountState;

@property (nonatomic, copy) NSString*  clientLink;
@property (nonatomic)       id         clientLocal;
@property (nonatomic)       int        clientState;

// Fields
@property (nonatomic, copy) NSString* nameCalled;
@property (nonatomic, copy) NSString* nameFirst;
@property (nonatomic, copy) NSString* nameLast;
@property (nonatomic, copy) NSString* phoneHome;
@property (nonatomic, copy) NSString* phoneMobile;
@property (nonatomic, copy) NSString* phoneWork;
@property (nonatomic, copy) NSString* pwdRecoveryAnswer;
@property (nonatomic, copy) NSString* pwdRecoveryQuestion;

- (NSString*) nameFull;
- (NSString*) nameFullCalled;

+ (Promise*) promise_loginViaEmail: (NSString*) email
                          password: (NSString*) pwd;
@end

的.m

@implementation User

// Links
@dynamic accountLink;
@dynamic accountState;

@dynamic clientLink;
@synthesize clientLocal;
@dynamic clientState;

// Fields
@dynamic nameCalled;
@dynamic nameFirst;
@dynamic nameLast;
@dynamic phoneHome;
@dynamic phoneMobile;
@dynamic phoneWork;
@dynamic pwdRecoveryAnswer;
@dynamic pwdRecoveryQuestion;

- (NSString*) nameFull
...

- (NSString*) nameFullCalled
...

+ (Promise*) promise_loginViaEmail: (NSString*) email
                          password: (NSString*) pwd
...
@end

答案 3 :(得分:0)

在AppDelegate方法中的applicationDidFinishLaunching完成之前,请确保您没有做任何事情。我收到此错误是因为我试图在这些方法完成之前执行查询。