Файл конфигурации приложения iOS - PullRequest
33 голосов
/ 18 ноября 2011

В приложении C # я всегда использовал файл app.config, чтобы сохранить некоторые данные для своего приложения для загрузки при необходимости (например, строка подключения).

Каков наилучший способ сохранить такую ​​информацию в приложении для iOS?

Ответы [ 8 ]

57 голосов
/ 18 ноября 2011

Вы можете создать файл со списком свойств (для этого есть шаблон в XCode, просто выберите Файл -> Новый файл и выберите его там), так что у вас будет что-то вроде «settings.plist» или что-то в этом роде. Вы можете думать о plist как о файле конфигурации key => value, с той разницей, что вы также можете содержать массивы и словари, помимо простого текста в качестве значения.

Используйте NSBundle для загрузки файла в ваше приложение, например

NSString *path = [[NSBundle mainBundle] pathForResource:@"settings" ofType:@"plist"];
NSDictionary *settings = [[NSDictionary alloc] initWithContentsOfFile:path];

Затем вы можете получить доступ к своим ключам как обычный словарь. Только не забудьте [отпустить] это после;).

10 голосов
/ 18 ноября 2011

Для небольших битов данных, таких как строка подключения, я бы использовал NSUserDefaults .

Когда вы хотите сохранить строку подключения, вы должны сделать следующее:

[[NSUserDefaults standardUserDefaults] setObject:myConnectionString 
                                          forKey:@"connectionString"];

Если вы хотите загрузить его, вы должны сделать это:

myConnectionString = [[NSUserDefaults standardUserDefaults] 
                          stringForKey:@"connectionString"];
4 голосов
/ 18 ноября 2011

Если вы просто храните относительно простой набор конфигурационных вещей, вы можете просто использовать NSDictionary методы сериализации (я не знаю, как ссылаться на каталог методов в классе doc) :

NSString *settingsPath = [@"~/pathtoconfig.plist" stringByExpandingTildeInPath];

NSMutableDictionary *settings = [NSMutableDictionary dictionary];
if([[NSFileManager defaultManager] fileExistsAtPath:settingsPath]){
    settings = [NSMutableDictionary dictionaryWithContentsOfFile:settingsPath];
}

// writing settings
[settings writeToFile:settingsPath atomically:YES];

Поскольку я не знаю, насколько вы знакомы с объективом-c, я также отмечу:

  • В iOS домашний каталог относится к изолированному каталогу приложения .
  • Я рекомендую немного прочитать о подсчете ссылок. Хотя цель iOS c iOS5 теперь автоматически составляет , для вас это число ссылок , но есть некоторые крайние случаи, о которых нужно знать ( Вот такой вопрос по ARC )
2 голосов
/ 30 декабря 2016

Обновлено для Swift 3 Xcode 8

Добавьте новый список свойств в ваш проект с именем "Sample.plist".Затем посмотрите следующий пример.

    let path: String = Bundle.main.path(forResource: "Sample", ofType: "plist")!
    let sampleConf: NSDictionary = NSDictionary(contentsOfFile: path)!
    print(sampleConf.object(forKey: "test") as! String)
2 голосов
/ 14 апреля 2015

Файл конфигурации приложения iOS в Swift с iOS 8.3 :

    let path: String = NSBundle.mainBundle().pathForResource("Info", ofType: "plist")!
    let nsDictionaryInfoPlist: NSDictionary = NSDictionary(contentsOfFile: path)!

    // Usage example: Google Maps iOS SDK/API Configuration.
    GMSServices.provideAPIKey(nsDictionaryInfoPlist.objectForKey("GoogleMapsiOSAPIKey") as! String)
2 голосов
/ 18 ноября 2011

В iOs каждое приложение имеет собственную изолированную программную среду, которая будет доступна только для этого приложения.Поэтому, если вы хотите, чтобы этот файл был доступен только для чтения, сохраните его в Application Bundle.иначе сохраните в папке приложения.

Вы не можете получить прямой доступ к папке приложения. Так что, если вы хотите сохранить файл в эту папку, вы должны сделать это программно.

1 голос
/ 18 ноября 2011

Я использую списки свойств для хранения небольших фрагментов данных - посмотрите, как их использовать:

http://iphoneincubator.com/blog/tag/nspropertylistserialization

0 голосов
/ 17 апреля 2015
...