#objective-c #ios
#objective-c #iOS
Вопрос:
appDelegate.categoryData = [NSMutableDictionary dictionaryWithObjectsAndKeys:
categoryStr, @"name",image ,@"image", nil];
[appDelegate.categories addObject:appDelegate.categoryData];
NSLog(@"Category Data:--->%@",appDelegate.categories);
Я успешно добавил объект mutabledictionary в mutuablearray, но я хочу сохранить этот массив и извлекать его при запуске приложения, поэтому, пожалуйста, дайте мне идею для разработки этой функциональности.
Заранее спасибо.
Комментарии:
1. если вы хотите, чтобы этот массив был постоянным, это невозможно, потому что этот массив инициализируется при запуске приложения.. Решение заключается в том, чтобы сохранить его в UserDefaults, после чего вы получите его в любое время в любом месте вашего приложения, пока не сбросите свое приложение
2. итак, пожалуйста, скажите мне, как я могу использовать NSUserDefaults для хранения и извлечения массива
3. я добавляю код ниже, попробуйте использовать тот, который вы можете получить
Ответ №1:
//you can save array in NSUserDefaults like below
if ([[NSUserDefaults standardUserDefaults] valueForKey:@"detail"]==nil)
{
NSMutableDictionary *dic_detail = [NSMutableDictionary dictionaryWithObjectsAndKeys:
categoryStr, @"name",image ,@"image", nil];
NSMutableArray *ary_detail = [[NSMutableArray alloc] init];
[ary_detail addObject:dic_detail];
[[NSUserDefaults standardUserDefaults] setObject:ary_detail forKey:@"detail"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
//if you want read that array you can read like below in your app
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"detail"]];
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"applicationDidEnterBackground = %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"detail"]);
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"applicationWillEnterForeground = %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"detail"]);
}
in my log its printing like this
applicationDidEnterBackground = (
{
image = img1;
name = cat1;
}
applicationWillEnterForeground = (
{
image = img1;
name = cat1;
}
Комментарии:
1. где я могу получить массив хранилища после выхода из моего приложения и снова запустить с отображаемыми категориями, которые хранятся в массиве
2. большое спасибо за сохранение массива, но я не могу получить этот массив после выхода из приложения
3. в методе viewDidLoad RootViewController для извлечения этого массива, но массив не отображается в tableview
4. Я инициализирую свой AppDelegate.categories в AppDelegate, поэтому любая проблема с извлечением этого массива, пожалуйста, сообщите мне
Ответ №2:
Возможно, что-то вроде этого:
NSMutableArray * array = [NSMutableArray array];
appDelegate.categoryData = [NSMutableDictionary dictionaryWithObjectsAndKeys:
categoryStr, @"name",
image ,@"image",
array, @"array", nil];
Комментарии:
1. Можете ли вы быть более конкретным? Вы имеете в виду, что хотите записать массив в файл?
2. Хорошо, я просто сохраняю объект AppDelegate.categories amp; и выхожу из приложения, и после этого сохраненная категория отображается в tableview
Ответ №3:
Что-то вроде:
При запуске приложения:
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSArray new], @"StoredArray", nil]];
В вашем классе, который «владеет» управлением массивом:
- (void)setArray:(NSMutableArray *)array {
[[NSUserDefaults standardUserDefaults] setObject:array forKey:@"StoredArray"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (NSArray*)array {
return [[[NSUserDefaults standardUserDefaults] arrayForKey:@"StoredArray"] mutableCopy];
}
Надеюсь, это поможет!