Я хочу создать категорию моего существующего класса swift, но в IDE нет возможности для этого.
Любая идея, если категория существует в быстром проекте? Или как добиться аналогичной функциональности в быстром проекте?
Я хочу создать категорию моего существующего класса swift, но в IDE нет возможности для этого.
Любая идея, если категория существует в быстром проекте? Или как добиться аналогичной функциональности в быстром проекте?
В Swift вы можете использовать Extensions для добавления новых функций к существующим классам, структурам и типам перечисления.
Они отличаются от категорий Objective-C несколькими способами, главным образом:
Как и сегодня, расширения могут:
Основной синтаксис объявления объявления заключается в следующем:
extension SomeType {
    // new functionality to add to SomeType goes here
}
Проверьте документацию Apple для получения дополнительной информации о том, как использовать расширения в Swift.
В Objective C они назывались категории, но в Swift они называются extensions. Цель их обоих - предоставить дополнительные функциональные возможности для существующих классов, не создавая подклассы.
Я читал о расширениях в документации, но я действительно не понимал, как использовать его в своем проекте, пока я не посмотрел этот обучающий видео (версия YouTube, источник github).
Вот резюме, взятое из видео о том, как это сделать.
Щелкните правой кнопкой мыши в Навигаторе проектов и выберите "Новый файл..."
Выберите "Swift File"
Соглашение состоит в том, чтобы сохранить имя файла в качестве имени класса, которое вы распространяете плюс (с знаком "+" ), что вы делаете с ним. Например, "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, но, как вы можете видеть, он используется так же, как если бы он был.
В Swift он называется Расширения! Проверьте это
Вы можете использовать следующий код в существующем классе
extension name{
func funcName(){
   } 
}