Я действительно не понимаю, в чем именно ваша проблема.
Прежде всего, Ваш словарь - это сохраненный объект?
//FirstPage.h
@property (nonatomic, retain) NSDictionary *SignatureSave;
//FirstPage.m
@synthesize SignatureSave;
…
UIImagePNGRepresentation(viewImage);
NSMutableArray *innerArray = [NSMutableArray array]; // using "array" is equivalent to alloc-init-autorelease
[innerArray addObject:viewImage];
[self.SignatureSave setObject:innerArray forKey:@"5599"];
// OR setting the array directly:
UIImagePNGRepresentation(viewImage);
NSArray *innerArray = [NSArray arrayWithObject:viewImage];
[self.SignatureSave setObject:innerArray forKey:@"5599"];
// OR even setting the image directly to the dictionary:
UIImagePNGRepresentation(viewImage);
[self.SignatureSave setObject:viewImage forKey:@"5599"];
теперь, если вы получите доступобъект, написав self.
перед ним, вызовет сохранение, и ваш объект останется живым.В противном случае он будет автоматически освобожден в конце метода.Это решит проблему, заключающуюся в том, что ваш словарь может отсутствовать / недоступен при создании табличного представления, и вам не нужно использовать синглтон.
что вы пытаетесь получить с помощью этого кода?
FirstPage *appShare = (FirstPage *)[[UIApplication sharedApplication] delegate];
с [[UIApplication sharedApplication] delegate]
вы получите делегата вашего приложения (очевидно).Это файлы MyAppNameAppDelegate
, но вы относитесь к ним как к классу FirstPage
.
Просто NSLog()
, чтобы проверить, что вы получаете правильный класс, который вы ожидаете.
NSLog(@"%@", [[[UIApplication sharedApplication] delegate] class]);
здесь у вас есть потенциальная утечка, вы выделяете init, но никогда не выпускаете ее:
NSArray *dataDuplicate = [[NSArray alloc]init ];
dataDuplicate = [appShare.SignatureSave allKeysForObject:@"innerArray"];
, кроме того, вы можете упростить ее (будет автоматически освобожден):
NSArray *dataDuplicate = [appShare.SignatureSave allKeysForObject:@"innerArray"];
и здесьу вас есть еще одна проблема.
Почему вы называете все ключи для объекта @"innerArray"
?
у вас нет такого объекта, и во многих других случаях это неправильно.innerArray
был вашим ранее названным массивом в FirstPage.m
, но только вам, как разработчику, лучше запомнить переменную.После компиляции у него все равно будет загадочное имя.Вы можете получить доступ к своему ключу @"5599"
, если хотите, но я не думаю, что вы этого хотите.В вашем случае вы хотите получить доступ ко всем ключам словаря, поэтому просто позвоните:
NSArray *dataDuplicate = [appShare.SignatureSave allKeys];
, теперь у вас будет массив со всеми ключами вашего словаря, и вы можете обращаться к ним, как вы делаете с помощью objectAtIndex:
.
NSString *keyName = [dataDuplicate objectAtIndex:indexPath.row];
cell.textLabel.text = keyName;
id theObject = [appShare.SignatureSave objectForKey:keyName]; // for example the image
Скажите, если это решит ваши проблемы, или скажите, как я неправильно понял ваш вопрос.