iOS/UIKit
[UIKit] : 구조체 문자열 원하는 문자열로 바꾸기
SeorinY
2022. 8. 24. 22:34
구조체의 문자열을 마음대로 바꿔보자!
ex ) "유서린" -> "제 이름은 유서린입니다."
간단한 방법으로는 또 하나의 변수를 만들어서 그 변수에 저장해주는 것이다
struct People{
let name : String
var nameString: String {
return "제 이름은 \(name)입니다."
}
}
위 코드처럼 구조체를 만들면 nameString 은 자동으로 완성된다.
전체코드
import UIKit
struct People{
let name : String
//nameString은 자동으로 완성된다.
var nameString: String {
return "제 이름은 \(name)입니다."
}
}
class ViewController: UIViewController{
let people = People(name: "유서린")
private let nameLabel : UILabel = {
let label = UILabel()
return label
}()
private let nameStringLabel : UILabel = {
let label = UILabel()
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(nameLabel)
view.addSubview(nameStringLabel)
configure()
}
private func configure(){
nameLabel.text = people.name
nameStringLabel.text = people.nameString
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
nameLabel.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
nameStringLabel.frame = CGRect(x: 100, y: 120, width: 300, height: 100)
}
}
두번째 방법으로는 extension 을 사용해서 String 에 함수를 추가해주는 방법이다.
extension String{
public func makeNameToNameString() -> String{
return "제 이름은 \(self)입니다"
}
}
위 처럼 String에 함수를 만들어준다면 이를 용이하게 사용할 수 있을 것이다.
전체코드
import UIKit
extension String{
//extension을 활용하여 함수를 만들어줌
public func makeNameToNameString() -> String{
return "제 이름은 \(self)입니다"
}
}
struct People{
let name : String
}
class ViewController: UIViewController{
let people = People(name: "유서린")
private let nameLabel : UILabel = {
let label = UILabel()
return label
}()
private let nameStringLabel : UILabel = {
let label = UILabel()
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(nameLabel)
view.addSubview(nameStringLabel)
configure()
}
private func configure(){
nameLabel.text = people.name
//name 을 nameString 으로 만들어줌
let nameString = people.name.makeNameToNameString()
nameStringLabel.text = nameString
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
nameLabel.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
nameStringLabel.frame = CGRect(x: 100, y: 120, width: 300, height: 100)
}
}