Учитывая следующий код:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if (mainViewController.loggedIn) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"test" message:@"notification received. view now?" delegate:self cancelButtonTitle:@"Later" otherButtonTitles: @"Show"), nil];
NSString *hash = [userInfo objectForKey:@"id"];
[alert setValue:hash forKey:@"hash"];
[alert show];
[alert release];
}
}
Здесь я пытаюсь установить значение (хэш) для ключа @ "хэш".Я делаю это, потому что мне нужно это хеш-значение в случае, если пользователь нажимает кнопку «Показать».Затем - в методе делегата - я пытаюсь снова прочитать значение:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 1) {
NSString *hash = [alertView valueForKey:@"hash"];
if (hash != nil) {
// send hash to server to show the correct site
}
}
}
Но как только я вызываю [alert setValue:hash forKey:@"hash"];
, мое приложение iphone вылетает.Вот что я вижу в консоли:
* Завершение приложения из-за необработанного исключения «NSUnknownKeyException», причина: «[setValue: forUndefinedKey:]: этот класс не является ключевымЗначение, совместимое с кодировкой для хэша ключа. '
Кто-нибудь имеет представление, что я сделал не так.Или как я могу передать свое значение "хэш" в метод clickedButtonAtIndex
?