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)
    }
}