2013-04-30 2 views
0

Может кто-нибудь сказать мне, что случилось со следующим кодом, который я адаптировано из поваренной книги IOS 5 разработчикаNSMetadataQueryDidUpdateNotification Не Рабочая

- (void) startMonitoringUbiquitousDocumentsFolder 
{ 
    // Remove any existing query – stored in local instance variable 
    if (alertQuery) [alertQuery stopQuery]; 

    // Search for all file names 
    alertQuery.predicate = [NSPredicate predicateWithFormat: @"NSMetadataItemFSNameKey == '*'"]; 
    alertQuery.searchScopes = [NSArray arrayWithObject: 
    NSMetadataQueryUbiquitousDocumentsScope]; 

    // Subscribe to query updates 

    [[NSNotificationCenter defaultCenter] 
      addObserver:self 
      selector:@selector(alertUserToUpdates:) 
      name:NSMetadataQueryDidUpdateNotification 
      object:nil]; 

    [alertQuery startQuery]; 
} 

- (void) alertUserToUpdates 
{ 
    NSLog(@"Contents changed in ubiquitous documents folder"); 

    UIAlertView *alertView = [[UIAlertView alloc] 
           initWithTitle:@"Home Monitor" 
           message:@"Something's going on." 
           delegate:nil 
           cancelButtonTitle:@"OK" 
           otherButtonTitles:@"Check Recording", nil]; 
    [alertView show]; 
    [self stopMonitoringUbiquitousDocumentsFolder]; 
} 

я получаю исключение, которое говорит alertUserToUpdates селектор: нераспознан. Почему он не может распознать метод, который, очевидно, находится рядом с ним?

2013-04-29 18:07:22.458 eyeFun[8231:907] -[RGPViewController alertUserToUpdates:]: unrecognized selector sent to instance 0x1fd506a0 
2013-04-29 18:07:22.462 eyeFun[8231:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RGPViewController alertUserToUpdates:]: unrecognized selector sent to instance 0x1fd506a0' 
*** First throw call stack: 
(0x337eb3e7 0x3b4e6963 0x337eef31 0x337ed64d 0x33745208 0x3373c349 0x34053b7f 0x340ab327 0x3373c349 0x337b810f 0x37880de9 0x340fa657 0x337c0857 0x337c0503 0x337bf177 0x3373223d 0x337320c9 0x3731133b 0x3564e2b9 0x465b5 0x3b913b20) 
libc++abi.dylib: terminate called throwing an exception 

ответ

2

Потому что не прямо рядом с ним.

Вы говорите, что используете селектор по имени alertUserToUpdates:. У вас есть метод с именем alertUserToUpdates. Значения : - это говорит о том, что метод принимает один аргумент, но фактический метод не принимает аргументов.

Ваш метод должен принимать аргумент типа NSNotification.

+0

Это также нормально обновлять селектор, чтобы указать на ваш метод с помощью '@selector (alertUserToUpdates)' - центр уведомлений не против вызова метода, который не принимает параметр «NSNotification». Но большую часть времени лучше принять параметр. –

+0

Благодаря обоим ответам. Я ценю помощь. –

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