Новое в iOS и застряло в одной проблеме в отношении добавления объектов в NSMutable Array и отображения массива на другом представлении в приложении. Данные отображаются отлично в другом представлении в TableView, но когда я добавляю в Array другой элемент (используя код ниже), он просто заменяет то, что было там, а не добавляет в массив.NSMutableArray Добавить и сохранить объекты
- (void) postArray {
tableData = [[NSMutableArray alloc] initWithCapacity:10];
tableData = [[NSMutableArray alloc] initWithObjects: nil];
[tableData addObject:favShot]; }
-(NSString *) saveFilePath {
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, TRUE);
return [[path objectAtIndex:0] stringByAppendingPathComponent:@"savefile.plist"]; }
- (void) viewWillDisappear:(BOOL)animated: (UIApplication *) application {
NSArray *values = [[NSArray alloc] initWithObjects:tableData, nil];
[values writeToFile:[self saveFilePath] atomically: TRUE]; }
- (void)viewDidLoad {
tableData = [[NSMutableArray alloc] initWithObjects: nil];
NSString *myPath = [self saveFilePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:myPath];
if (fileExists)
{
NSArray *values = [[NSArray alloc] initWithContentsOfFile:myPath];
tableData = [values mutable copy];
}
UIApplication *myApp = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:myApp];
[super viewDidLoad]; }
спасибо.
Так что я перенес ее в viewDidLoad и я могу добавить больше, чем один, который является огромным шагом вперед. Однако, когда я возвращаюсь к предыдущим представлениям и снова вводите представление, где я снова добавляю массив, этот предыдущий сохраненный массив исчез. Что мне здесь не хватает? – Bachzen
Переместившись к предыдущему виду (предположительно, представленному в контроллере навигации), вы выбрасываете представление (и контроллер), а затем воссоздаете их при навигации по назад. Вам нужно будет сделать что-то вроде записи содержимого массива на диск в viewWillDisappear, а затем перезагрузить его в viewDidLoad. – Wain
Если я сохраню его в .plist, почему бы ему не быть доступным, когда я вернусь к этой точке зрения? Я использовал .plist для сохранения строк в разных представлениях и, похоже, работает. – Bachzen