카테고리에 대한 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
'source' 카테고리의 다른 글
터미널을 떠난 후 $PATH가 저장되지 않음 (0) | 2023.09.09 |
---|---|
깃체리픽 vs 리베이스 (0) | 2023.09.09 |
전체 데이터베이스를 다른 서버 데이터베이스에 복사하는 방법? (0) | 2023.09.09 |
여러 색상의 텍스트가 있는 단일 텍스트 보기 (0) | 2023.09.09 |
html 페이지 인쇄 중 여백 (0) | 2023.09.09 |