我在通过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
部分时,视图会正常工作,但其他人不会,而是会抛出相同的错误。
这可能是合理的原因吗?
答案 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完成之前,请确保您没有做任何事情。我收到此错误是因为我试图在这些方法完成之前执行查询。