IT story

카테고리에 대한 신속한 클래스를 만드는 방법은 무엇입니까?

hot-time 2020. 9. 17. 18:56
반응형

카테고리에 대한 신속한 클래스를 만드는 방법은 무엇입니까?


기존 swift 클래스의 카테고리를 만들고 싶지만 IDE에 그렇게 할 수있는 옵션이 없습니다.

카테고리가 신속한 프로젝트에 존재하는지 여부를 알 수 있습니까? 아니면 신속한 프로젝트에서 유사한 기능을 달성하는 방법은 무엇입니까?


Swift에서는 Extensions기존 클래스, 구조체 및 열거 유형에 새 기능을 추가 하는 사용할 수 있습니다.

주로 다음과 같은 몇 가지면에서 Objective-C 범주와 다릅니다.

  • 그들은 이름이 없습니다
  • 확장을 명시 적으로 가져올 필요는 없습니다. 기존 유형에 새 기능을 추가하기 위해 확장을 정의하는 경우 확장이 정의되기 전에 생성 된 경우에도 해당 유형의 모든 기존 인스턴스에서 새 기능을 사용할 수 있습니다.
  • 위에서 언급했듯이 클래스뿐만 아니라 다른 유형에서도 작동합니다.

현재 상태에서 Extensions는 다음을 수행 할 수 있습니다.

  • 계산 된 속성 및 계산 된 정적 속성 추가
  • 인스턴스 메서드 및 형식 메서드 정의
  • 새로운 이니셜 라이저 제공
  • 아래 첨자 정의
  • 새 중첩 유형 정의 및 사용
  • 기존 유형이 프로토콜을 준수하도록합니다.

확장을 선언하는 기본 구문은 다음과 같습니다.

extension SomeType {
    // new functionality to add to SomeType goes here
}

Swift에서 확장 기능을 사용하는 방법에 대한 자세한 정보는 Apple의 문서확인하십시오 .


Objective C에서는 카테고리 라고 했지만 Swift에서는 확장 이라고 합니다 . 둘 다의 목적은 하위 클래스를 만들지 않고도 기존 클래스에 추가 기능을 제공하는 것입니다.

문서에서 확장에 대해 읽었지만 이 튜토리얼 비디오 ( YouTube 버전 , github 소스 )를보기 전까지는 프로젝트에서 확장 기능을 사용하는 방법을 이해하지 못했습니다 .

다음은이를 수행하는 방법에 대한 비디오에서 가져온 요약입니다.

프로젝트에 Swift 파일 추가

  • 프로젝트 네비게이터를 마우스 오른쪽 버튼으로 클릭하고 "새 파일 ..."을 선택합니다.

  • "Swift 파일"을 선택합니다.

  • 규칙은 파일 이름을 확장하려는 클래스 이름과 함께 수행중인 작업 ( "+"기호 포함)으로 저장하는 것입니다. 예 : "UIImage + Cropping".

확장에 대한 코드 작성

방금 만든 새 Swift 파일을 엽니 다.

확장하는 경우 UIKit(대신 Foundation) 가져와야 합니다 UIView. 그런 다음 extension확장하려는 클래스 이름 앞에 키워드를 사용하십시오 . 그런 다음 클래스에 고유 한 새 메서드를 추가 할 수 있습니다. (확장은 기존 메서드를 재정의하는 것이 아니라 새 메서드를 추가하기위한 것이므로 이름입니다.)

비디오에서 예제는 이미지에서 원을 자르고 테두리를 제공하는 방법을 추가하는 것입니다.

import UIKit

extension UIImage {

    func cropToCircleWithBorderColor(color: UIColor, lineWidth: CGFloat) -> UIImage {

        // code to create the cropped circle with colored border

        return newImage
    }
}

전체 예제는 여기참조 하십시오 .

프로젝트의 어느 곳에서나 확장 사용

이제 표준 클래스의 일부인 것처럼 코드의 모든 위치에서 해당 클래스에 대한 새 메서드를 사용할 수 있습니다.

다음은 비디오의 예입니다 ( github ).

import UIKit
class ViewController: UIViewController {

    @IBOutlet var imageView : UIImageView = nil

    override func viewDidLoad() {
        super.viewDidLoad()

        let img = imageView.image
        imageView.image = img.cropToCircleWithBorderColor(UIColor(red:0.91, green:0.34, blue:0.16, alpha:1.00), lineWidth: 20)
    }
}

이 방법 cropToCircleWithBorderColor은의 표준 부분은 UIImage아니지만 보시다시피 예전처럼 사용됩니다.

For further study:


In Swift it's called Extensions ! Check it out


You can use following code in your existing class

extension name{
func funcName(){
   } 
}

참고URL : https://stackoverflow.com/questions/24142829/how-to-create-swift-class-for-category

반응형