2016-11-11 5 views
0

Если создать сегментированный поле строки следующим образом:Swift Eureka Forms - Как назначить значения параметрам поля?

<<< SegmentedRow<String>(){ row in 
    row.title = "Sex" 
    row.tag = "sex" 
    row.selectorTitle = "Select your sex" 
    row.options = ["Male","Female"] 
} 

Как соответствовать опции для определенного значения? Например, если пользователь выбирает «Мужской», то есть ли способ получить M вместо Male в коде, но все равно показывает Male?

Или, если у меня есть список стран, например:

<<< PushRow<String>(){ row in 
    row.title = "Passport Issuing Country" 
    row.tag = "passportIssuingCountry" 
    row.selectorTitle = "Passport Issuing Country" 
    row.options = ["AUSTRALIA","AUSTRIA","BELGIUM"] 
} 

можно присвоить каждому название страны на код страны, как AUSTRALIA вернется AU, AUSTRIA вернется AT и т.д.

ответ

1

Прямо сейчас, нет возможности сохранить внутреннее значение для опции - но это то, что вы можете сделать:

1. Создайте перечисление со всеми доступными опциями

enum Sex: Int { 
    case NotKnown  = 0 
    case Male   = 1 
    case Female   = 2 
    case NotApplicable = 9 

    static let all  = [NotKnown, Male, Female, NotApplicable] 
    static let strings = ["Unknown", "Male", "Female", "Not Applicable"] 

    func string() -> String { 
     let index = Sex.all.index(of: self) ?? 0 
     return Sex.strings[index] 
    } 

    static func fromString(string: String) -> Sex { 
     if let index = Sex.strings.index(of: string) { 
      return Sex.all[index] 
     } 
     return Sex.NotKnown 
    } 
} 

2. Создайте свою строку со всеми параметрами, которые вы хотите выставить

<<< SegmentedRow<String>(){ row in 
    row.title = "Sex" 
    row.tag = "sex" 
    row.selectorTitle = "Select your sex" 
    row.options = [Sex.Female.string(), Sex.Male.string()] 
} 

3. Считать значение

let row: SegmentedRow<String>? = self.form.rowBy(tag: "sex") 
if let value = row?.value { 
    // Returns "Female" 
    print(value) 

    // Returns 2 
    print(Sex.fromString(string: value).rawValue) 
} 

Пользователь видит и выбирает Strings , но вы получите enum -значение, которое вы для exa mple может сохранять в вашей базе данных как целое число (см. ISO/IEC 5218).

https://en.wikipedia.org/wiki/ISO/IEC_5218

+0

Thanks! Использование метода fromString для перечисления работало для меня! – Loris