Получите значение с типом из plist в swift

user2690354 спросил: 28 марта 2018 в 03:04 в: swift

Я видел много примеров того, как получить значение из plist в swift, но все они включают в себя тип, переводящий переменную после того, как она считывается из plist. Поскольку мы уже придаем свойству тип при создании его в plist, зачем нам его вводить снова? Есть ли способ считывать значения из plist с типом, который они имеют в plist?

Например, это подход, который я использую для чтения значения из plist:

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

Почему мне нужно снова использовать переменную как String, когда я уже набрал ее как String в plist?

2 ответа

Bruno Rocha ответил: 28 марта 2018 в 03:15

Потому что ваш plist - это словарь [String: Any]. Он может содержать значения, которые не являются String, и компилятор не может знать, что к чему, пока вы специально не скажете это - через приведение, которое вы делаете.

user2690354 ответил: 28 марта 2018 в 03:21
Спасибо, Бруно, тогда почему в пользовательском интерфейсе plist вы сначала создаете переменные с типом?
Bruno Rocha ответил: 28 марта 2018 в 06:16
@ user2690354 Язык программирования Swift и Xcode - это две разные вещи. Пользовательский интерфейс plist, который вы видите, является функцией XCode, а не Swift. Swift ничего не знает о вашем проекте XCode - вы даже можете передать словарные ключи, которые не существуют, этой функции :)
vadian ответил: 28 марта 2018 в 03:22

Пожалуйста, нажмите на object(forInfoDictionaryKey. Вы увидите