Списки недвижимости - Чтение и запись (iPhone) - PullRequest
2 голосов
/ 01 ноября 2009

Хорошо, здесь идет. Я делаю очень простое приложение и хочу, чтобы пользователь мог хранить информацию между сессиями. В основном, для них, чтобы сохранить свою игру. Мне нужно сохранить только 7 переменных, все они являются целыми числами.

Это код, который я должен сохранить в игре.

- (NSString *)dataFilePath
{
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];
 return [documentsDirectory stringByAppendingPathComponent:fileName];
}

- (IBAction)saveGameAction:(id)sender
{
 NSString *test1 = [[NSString alloc] initWithFormat:@"%d",varMoney];


 NSMutableArray *array = [[NSMutableArray alloc] init];
 [array addObject:test1];
 [array writeToFile:[self dataFilePath] atomically:YES];
 [array release];


 [test1 release];

}

Это работает (Ради простоты, я храню только 1 из переменных, а не все 7 в этом примере кода. Что не работает, так это получение значений из списка свойств. После нажатия кнопки «Загрузить» я хочу вывести переменную из списка и вернуть ее в правильную переменную. Вот код, который у меня есть для этого:

- (IBAction)loadGameAction:(id)sender
{
 NSString *filePath = [self dataFilePath];
 if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
 {


  NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
  NSString *testing = [array objectAtIndex:0];
  [array release];

  varMoney = [testing intValue];




  NSString *testMessage = [[NSString alloc] initWithFormat:@"%d", varMoney];
  //NSString *testMessage = [[NSString alloc] initWithFormat:@"%@", testing];

  UIAlertView *alert = [[UIAlertView alloc]
         initWithTitle:@"Test"
         message:testMessage
         delegate:nil cancelButtonTitle:@"Cool"
         otherButtonTitles:nil];
  [alert show]; 
  [alert release];



 }

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

Так что это моя проблема. Я не могу прочитать значения из списка свойств. Мне нужна ваша помощь, чтобы решить эту проблему, спасибо!

Ответы [ 2 ]

4 голосов
/ 01 ноября 2009

Вместо того, чтобы возиться с этим только для 7 значений, проверьте NSUserDefaults. Очень прост в реализации и надежен.

Сохранение:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:42 forKey:@"integerKey"];
[prefs synchronize];

Получение:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSInteger myInt = [prefs integerForKey:@"integerKey"];
1 голос
/ 10 ноября 2009

U не нужно использовать пользовательские настройки по умолчанию

в вашем коде просто измените одну строку, и это работает:

NSString * testing = [[массив objectAtIndex: 0] сохранить ];

вы освобождаете массив, и ваша строка автоматически освобождается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...