Подтвердить что ты не робот

Файл конфигурации приложения iOS

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

myConnectionString = [[NSUserDefaults standardUserDefaults] 
                          stringForKey:@"connectionString"];

Ответ 3

Если вы просто сохраняете относительно простой набор элементов конфигурации, вы можете просто использовать NSDictionary методы сериализации (я не знаю, t знать, как ссылаться на каталог методов в классе 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];

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

Ответ 4

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

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

Ответ 5

Файл конфигурации приложения 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)

Ответ 7

Я понимаю, что опаздываю на вечеринку, но после обнаружения этого я был разочарован принятым ответом, поэтому я создал pod решить это! Это основано на идее @RafaelSteil answer, но имеет более простой интерфейс, кэширует загруженные данные конфигурации и поддерживает контейнеры, предоставляющие свои собственные значения по умолчанию, которые можно переопределить по основному приложению. Надеюсь, это поможет кому-то.

Ответ 8

Обновлено для 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)