2014-07-24 2 views
0

Я делаю приложение iOS. Цель состоит в том, чтобы отправить предложения от пользователя, чтобы улучшить предлагаемую мной услугу.iOS, как хранить данные, даже если приложение закрыто

Приложение является родным приложением. Я хочу создать глобальный NSMutableArray, где храню все предложения. Проблема в том, что мое устройство не может быть подключено к Интернету. Существует два случая: Если устройство подключено, когда пользователь отправил свое предложение, он отправляется. Если нет, предложение сохраняется в моем NSMutableArray и отправляется позже.

Возможно ли создать глобальную переменную, в которой хранятся все мои предложения? Если мое приложение разбито/закрыто, эта переменная не может быть отменена/сброшена. Достаточно ли одного достаточно для этого?

+0

использование NSuserDefaults –

ответ

1

первый чек на интернет-статус вашего статуса device.if связано затем отправить статус array.if в не подключен, то сохранить массив в NSUserDefaults.To сохранить предложения массив

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray * suggestions = [[NSMutableArray alloc] init]; 
[defaults setObject: suggestions forKey:@"suggestions"]; 

для доступа те предложения

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableArray * suggestions = [[NSMutableArray alloc]initWithArray:[defaultsobjectForKey:@"suggestions"]]; 
+0

молодец, спасибо! – user3800957

0

Синглтона недостаточно, потому что вы потеряете все свои данные, если ваше приложение будет убито или сработает. Если есть несколько предложений, и они короткие, самым простым способом было бы сохранить их в UserDefaults. Если вы собираетесь сохранить слишком много предложений с длинными текстами и несколькими полями, вам понадобится реализовать базу данных. Core Data будет хорошим решением для вашей проблемы.

0

Простой (одна строка кода) способ сделать это состоит в использовании plists и команду

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag 

на NSArray

Из описания:

Записывает содержимое массива в файл по заданному пути. Если содержимое массива - это все объекты списка свойств (объекты NSString, NSData, NSArray или NSDictionary), файл, написанный этим методом, может использоваться для инициализации нового массива с помощью метода класса arrayWithContentsOfFile: или метода экземпляра initWithContentsOfFile :. Этот метод рекурсивно проверяет, что все содержащиеся объекты являются объектами списка свойств перед записью файла и возвращает НЕТ, если все объекты не являются объектами списка свойств, так как результирующий файл не будет действительным списком свойств.

В вашем примере вы бы (скажем) NSArray из NSDictionaries с каждым NSDictionary, содержащим предложения. Вызов writeToFile выписал бы его в случае отсутствия доступности сети. Затем (скажем, в приложении foreground event) вы должны прочитать файл (вызов arrayWithContentsOfFile). Если есть какой-либо контент, который вы попытаетесь снова нажать на сервер.

0

Вы можете использовать NSUserDefaults.

//write to NSUserDefaults 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:[NSNumber numberWithInteger:userRatingInteger] forKey:@"userRating"]; 
[defaults synchronize]; 

//read from NSUserDefaults 
NSNumber *userRatingNumber = [defaults objectForKey:@"userRating"]; 
if (userRatingNumber) { // the user has rated. 
    // Use the value as needed. 
} 
Смежные вопросы