Мне было интересно, есть ли способ хранить небольшие объемы данных, не переходя к полноценному API основных данных.Мне просто нужно где-то хранить 6 «двойных» значений ... Какой лучший способ для этого?
Спасибо, Алекс.
Базовые данные - это всего лишь один из способов хранения данных, и это имеет смысл только тогда, когда вам нужно то, что они делают.Вот пять хороших вариантов хранения ваших данных:
Использование NSUserDefaults.(Очень просто.)
NSUserDefaults
Сохраните данные в соответствующей структуре (скажем, NSDictionary) и сохраните их в виде списка свойств.(Чертовски просто.)
NSDictionary
Сохраните данные в классе вашего собственного дизайна, который реализует NSCoding, а затем запишите экземпляр этого класса в файл, используя NSKeyedArchiver.(Хорошо работает для хранения целых графов объектов; это в основном то, что делает IB. Может потребоваться час или два, чтобы свет включился, но как только вы поймете это, это очень хороший способ чтения и записи объектов.)
NSCoding
NSKeyedArchiver
Используйте API файловой системы Cocoa Touch, в частности NSFileHandle и NSFileManager.(Концептуально просто, если вы когда-либо работали с файловой системой раньше. Обеспечивает полный контроль.)
NSFileHandle
NSFileManager
Используйте обычный старый API файловой системы POSIX.(Лучше всего подходит для существующего кода Unix или кода, который вы также хотите скомпилировать на других платформах.)
Прежде чем перейти к какому-либо из них, прочитайте Архивы AppleРуководство по программированию сериализаций , Пользовательские настройки по умолчанию Темы программирования и Руководство по программированию файловой системы .
Вы можете использовать NSUserDefaults для этого (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html).
-(void)saveToUserDefaults:(NSString*)myString { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; if (standardUserDefaults) { [standardUserDefaults setObject:myString forKey:@"Prefs"]; [standardUserDefaults synchronize]; } } -(NSString*)retrieveFromUserDefaults { NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; NSString *val = nil; if (standardUserDefaults) val = [standardUserDefaults objectForKey:@"Prefs"]; return val; }
Самый простой способ хранить небольшие объемы данных без использования некоторых более крупных API - это класс NSUserDefaults . Это действительно легко настроить и использовать.