首页 > 解决方案 > 如何快速读取数组和枚举数据

问题描述

如何快速读取这三种类型的数据我想将这三个变量分配给标签。我该怎么做?[这是第一次,用swift编码,我是一个学习者,我是IOS移动开发的初学者]

学生.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
     }

标签: iosswiftenumsenumeration

解决方案


如果您想引用第一个电话号码,那么您需要

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

我可以建议其他一些改进:

  • 不需要在 DOB 结构中使用隐式展开的选项 - 初始化程序确保它们具有值
  • 为什么不简单地使用 aDate作为出生日期?
  • 同样,在你的 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)

推荐阅读