source

카테고리에 대한 swift class를 만드는 방법은?

ittop 2023. 9. 9. 10:16
반응형

카테고리에 대한 swift class를 만드는 방법은?

기존 swift class의 카테고리를 만들고 싶은데 IDE에서 그렇게 할 수 있는 옵션이 없습니다.

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

스위프트에서는 다음을 사용할 수 있습니다.Extensions기존 클래스, 구조 및 열거형에 새 기능을 추가합니다.

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

  • 이름이 없습니다.
  • 확장명을 명시적으로 가져올 필요는 없습니다.기존 유형에 새 기능을 추가하도록 확장을 정의하면 확장이 정의되기 전에 생성된 경우에도 해당 유형의 모든 기존 인스턴스에서 새 기능을 사용할 수 있습니다.
  • 위에서 말한 것처럼, 그들은 수업뿐만 아니라 다른 종류의 수업에도 참여합니다.

오늘날과 같이 Extension은 다음과 같은 이점을 제공합니다.

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

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

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

Swift에서 Extensions를 사용하는 방법에 대한 자세한 내용은 Apple 문서를 참조하십시오.

목표 C에서는 범주라고 불렸지만 스위프트에서는 확장이라고 불렸습니다.둘 다 하위 클래스를 만들지 않고 기존 클래스에 추가 기능을 제공하는 것이 목적입니다.

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

다음은 그것을 어떻게 하는지 비디오에서 요약한 것입니다.

프로젝트에 Swift 파일 추가

  • Project Navigator(프로젝트 탐색기)에서 마우스 오른쪽 단추를 누른 후 "New File(새 파일)"을 선택합니다.."

  • "Swift File"을 선택합니다.

  • 규칙은 파일 이름을 확장 중인 클래스 이름과 ("+" 기호가 있는) 작업을 추가하여 저장하는 것입니다.예를 들어 "UImage+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, 하지만 보시다시피, 원래와 똑같이 사용됩니다.

추가 연구를 위해:

스위프트에서는 Extensions라고 합니다! 확인해보세요.

기존 클래스에서 다음 코드를 사용할 수 있습니다.

extension name{
func funcName(){
   } 
}

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

반응형