2014-10-08 56 views
1

我在通过Parse.com访问特定函数时遇到问题。当我为新视图运行查询时,我得到'PFUser类必须注册RegisterSubclass'错误。问题是;这已经在应用程序委托中注册,所以我不确定可能导致问题的原因。PFUser必须注册registerSubclass iOS

有问题的代码:

- (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部分时,该视图起作用,但其余部分不起作用,而是抛出相同的错误。

这将是什么逻辑原因?

回答

0

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

我有一个类似的问题,这是因为我是跑解析setApplicationId前解析代码...

+0

不幸的是,没有照顾到这个问题。我一直在这个项目上工作了一段时间,这是第一次出现这个问题。相当加重 – 2014-10-08 20:01:20

0

我想出答案。

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

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

希望别人能找到这个帮助。

0

据我所知,不需要PFUser注册。以下是我的工作应用程序的注册码,后面跟着用户类.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 
0

只要确保你是不是你的AppDelegate方法的applicationDidFinishLaunching完成之前,做任何事情。我得到这个错误,因为我试图在这些方法完成之前执行查询。