Получение пользовательских значений в Plist - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь получить пользовательские настройки сборки в моем .plist.Я работаю над приложением для Mac и использую Info.plist (не должен быть пользовательским, верно?)

Я использую следующий код для извлечения своих значений из Plist:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    // Insert code here to initialize your application
    let defaults = UserDefaults.standard
    defaults.set(nil, forKey: "access_token")
    defaults.set(nil, forKey: "refresh_token")
    self.userLoggedOut()

    let em = NSAppleEventManager.shared()
    em.setEventHandler(self, andSelector: #selector(self.getUrl(_:withReplyEvent:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL))

    var myDict: NSDictionary?
    if let path = Bundle.main.path(forResource: "Info", ofType: "plist") {
        myDict = NSDictionary(contentsOfFile: path)
        let serverURLString = myDict?.object(forKey: "SERVER_URL") as! String
        let appNameString = myDict?.object(forKey: "APP_NAME") as! String
        print(serverURLString)
        print(appNameString)
        Constant.apiUrlString = serverURLString
        Constant.applicationName = appNameString
    }
}

Это напечатает: $(YT_SERVER_URL) $(YT_APP_NAME)

Мой список выглядит следующим образом:

enter image description here

Я добавил свои пользовательские настройки сборки в мой Проект> Цели

enter image description here

Почему я не могу найти добавленные там значения?Что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Используя эти строки, вы можете получить словарь Plist ::

guard let path = Bundle(for: *YourClass*.self).url(forResource: "Info", withExtension: "plist"),
      let dict = NSDictionary(contentsOf: path) as? [String: Any]
else {
    return 
}
// Access any key here like :: 
let serverUrl = dict["SERVER_URL"] as? String
0 голосов
/ 21 февраля 2019

Прежде всего, вы можете получить доступ к пользовательским значениям из вашего Plist.Чтобы получить доступ к пользовательскому значению из Plist, вам необходимо добавить следующий код:

extension Bundle {
    var apiBaseURL: String {
        return object(forInfoDictionaryKey: "serviceURL") as? String ?? ""
    }
}

Использование:

let appConfiguration =  Bundle.main.apiBaseURL

Ваш applicationDidFinishLaunching будет выглядеть следующим образом:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    let defaults = UserDefaults.standard
    defaults.set(nil, forKey: "access_token")
    defaults.set(nil, forKey: "refresh_token")
    self.userLoggedOut()

    let em = NSAppleEventManager.shared()
    em.setEventHandler(self, andSelector: #selector(self.getUrl(_:withReplyEvent:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL))

    Constant.apiUrlString = Bundle.main.apiBaseURL
    Constant.applicationName = Bundle.main.appName
}

Кроме того, вам нужно будет проверить следующие вещи

  1. Перейти к упаковке и проверить Info Plist Файл.это должен быть ваш основной файл Info Plist.

  2. Проверить Info Plist Как вы выбрали пользовательское значение в файле Info Plist

enter image description here Info Plist File

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