Как читать массив и перечислять данные на swift - PullRequest
0 голосов
/ 15 марта 2019

как читать эти три типа данных на swift Я хочу назначить эти три переменные меткам. Как мне это сделать? [ Это первый раз, когда я пишу со swift, я учусь, я очень новичок в разработке мобильных приложений для IOS ]

student.swift

    class Student{
        let nubmers: [phone_number]? 
        let bday: DOB?
        let gender: Gender?

        init(numbers:[phone_number],bday:DOB, gender:Gender){
            self.nubmers = []
            self.bday = bday
            self.gender = gender
       }
    }

enum Gender{
    case Male
    case Female
    case Unspecific
}

phone_number.swift

import Foundation
    struct phone_number {
        var number:String!
    }

DOB.dart

import Foundation

struct DOB {
    let year:Int!
    let month:Int!
    let day:Int!
}

вставить данные, как это? Это правильно?

 let student1 = Student(
             numbers: [phone_number(number: "0773024962")],
             bday: DOB(year:1996,month:01,day:13),
             gender: Gender.Male)

Я хочу читать вот так // Ошибка

 func setStudent(student: Student){
         label.text = numbers.number
         label.text = student.bday
          label.text = student.gender
     }

1 Ответ

0 голосов
/ 15 марта 2019

Если вы хотите сослаться на первый номер телефона, вам нужно

label.text = student.numbers.first?.number

Я могу предложить несколько других улучшений:

  • Использование неявно развернутых опций в вашей DOBstruct не обязательна - инициализатор гарантирует, что они будут иметь значения
  • Почему бы просто не использовать Date для даты рождения?
  • Точно так же упаковка String в структуре для вашего phone_number кажется ненужной.
  • Стиль Swift использует заглавные буквы верблюда для структур и классов, а не _, поэтому должно быть PhoneNumber
  • Случаи перечисления должны начинаться со строчной буквы
  • Вы можете использовать структуру вместо класса для Student - вы используете let свойства, поэтому у вас уже есть неизменность.Структура дает вам автоматическую генерацию инициализатора

struct Student {
    let numbers: [String] 
    let bday: Date
    let gender: Gender
}

enum Gender {
    case male
    case female
    case unspecified
}

var dc = DateComponents()

dc.setValue(13, for: .day)
dc.setValue(1, for: .month)
dc.setValue(1996, for: .year)
dc.timeZone = TimeZone(secondsFromGMT: 0)
let dob = Calendar.autoupdatingCurrent.date(from: dc)! 
// You could also use a DateFormatter to parse DOB from a string
let student1 = Student(numbers:["0773024962"], DOB:dob, gender:.male)
...