2013-09-03 4 views
1

Я - новичок в программировании iOS и должен [быстро] портировать приложение Кордовы в iOS. Я столкнулся с приведенной ниже ошибкой при попытке реплицировать найденный проект here.AppDelegate - непризнанный селектор, отправленный в экземпляр

Что может быть причиной и как я могу ее решить, не углубляясь в код? (Если возможно)

AppDelegate getCommandInstance:]: unrecognized selector sent to instance <instance> 
ebKit discarded an uncaught exception in the  
webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: 
<NSInvalidArgumentException> -[AppDelegate getCommandInstance:]: unrecognized selector 
sent to instance <instance> 

Спасибо.

[Редактировать]

AppDelegate.h имеет линии ниже

@property (nonatomic, retain) IBOutlet UIWindow* window; 
@property (nonatomic, retain) IBOutlet CDVViewController* viewController; 

AppDelegate.m имеет

CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease]; 
self.window.autoresizesSubviews = YES; 

и

[self.window addSubview:self.viewController.view]; 
[self.window makeKeyAndVisible]; 

[Редактировать]

Это единственная часть кода, которая ссылается на getCommandInstance, которая упоминается в ошибке, как видно выше. Этот фрагмент кода находится в SQLitePlugin.m

-(CDVPlugin*) initWithWebView:(UIWebView*)theWebView 
{ 
self = (SQLitePlugin*)[super initWithWebView:theWebView]; 
if (self) { 
    openDBs = [NSMutableDictionary dictionaryWithCapacity:0]; 
    [openDBs retain]; 

    CDVFile* pgFile = [[self appDelegate] getCommandInstance: @"org.apache.cordova.file"]; 
    NSString *docs = [pgFile appDocsPath]; 
    [self setAppDocsPath:docs]; 

} 
return self; 

}

+0

почта, которая вызывает сбой. – Morion

+0

См. Править для кода, на который ссылаются при сбое. – myuzikoda

ответ

0

кажется, что вы просто должны отдать свой делегат приложения от базового класса к одному из ваших проект. Например, если эта линия вызывает сбой

[[[UIApplication sharedApplication] delegate] getCommandInstance: someVar]; 

и приложение делегата, например, MyAppDelegate, а затем просто добавить литая

[((MyAppDelegate*)[[UIApplication sharedApplication] delegate]) getCommandInstance: someVar]; 

конечно, в случае вашего собственного приложения делегата реализует этот метод ,

+0

Это исправило ошибку! Благодарю. – myuzikoda

+0

добро пожаловать =) – Morion

0

Первый ваш вопрос неясен, но я предполагаю, что это должно быть

На AppDelegate.h

@property (nonatomic, strong) UINavigationController *navigationController; 

На AppDelegate.m Я NOT уверен, что b ет Вы можете написать в

self.window.rootViewController = self.viewController; 

Это неправильно так, что вам нужно изменить, как, как это

self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    self.window.rootViewController = self.navigationController; 
+0

См. Приведенные выше изменения. Нет строки в AppDelegates.m, которая говорит self.window.rootViewController = self.viewController; – myuzikoda

+0

@ user2609731 - тогда где ваш rootViewController? – iPatel

+0

Кажется, у меня их нет. Я добавил код, как было рекомендовано выше, но он не исправил ошибку. Возможно, я добавил не туда. Я добавил в AppDelegate.m после self.window.autoresizesSubviews = YES; – myuzikoda

Смежные вопросы