It is a reference type, points to specific set of data. Everything happens on the orignal data.
Basic Structure
class Developer {
var name: String
var jobTitles: String
var yearsExp: Int
init(name: String, jobTitles: String, yearsExp: Int) {
self.name = name
self.jobTitles = jobTitles
self.yearsExp = yearsExp
}
}
let sean = Developer(name: "Sean", jobTitles: "IOS Engineer", yearsExp: 5)
print(sean.name)
print(sean.jobTitles)
print(sean.yearsExp)
output
Sean
IOS Engineer
5
If you want a class but will add values to it later then use ?(optionals) after data type, observe below
class Developer {
var name: String?
var jobTitles: String?
var yearsExp: Int?
init() {} //to initialize the nill values
init(name: String, jobTitles: String, yearsExp: Int) {
self.name = name
self.jobTitles = jobTitles
self.yearsExp = yearsExp
}
}
let sean = Developer()
print(sean.name)
print(sean.jobTitles)
print(sean.yearsExp)
output
nil
nil
nil
The drawback of using ? optional and how to remove it
class Developer {
var name: String?
var jobTitles: String?
var yearsExp: Int?
init() {}
init(name: String, jobTitles: String, yearsExp: Int) {
self.name = name
self.jobTitles = jobTitles
self.yearsExp = yearsExp
}
func speakName() {
print(name!) //using force unwrap(!) to remove optional in the output
//before string because we used String? datatype(or else the output would've
//been: Optional("Sean"))
}
}
let sean = Developer(name: "Sean", jobTitles: "Coder", yearsExp: 2)
sean.speakName()
output
Sean