Я хотел бы подкласса MKCircle
(например, MyCircle
), добавив еще одно свойство String, назовем его «code
». Это свойство не должно быть необязательным и постоянным, поэтому я должен установить его из инициализатора, правильно? Конечно, MyCircle
также должен получить координату центра и радиус. Эти два свойства доступны только для чтения, поэтому мне также нужно установить их через инициализатор.Подкласс MKCircle in Swift
В конце мне нужен инициализатор, который принимает 3 параметра: coordinate
, radius
и code
. Звуки довольно легкие, но Swifts назначенные и удобные италитаризаторы и его правила дают мне трудное время здесь.
Проблема определение MKCircle
:
class MKCircle : MKShape, MKOverlay, MKAnnotation, NSObjectProtocol {
convenience init(centerCoordinate coord: CLLocationCoordinate2D, radius: CLLocationDistance)
convenience init(mapRect: MKMapRect) // radius will be determined from MAX(width, height)
var coordinate: CLLocationCoordinate2D { get }
var radius: CLLocationDistance { get }
var boundingMapRect: MKMapRect { get }
}
Как вы можете видеть инициализатор MKCircle
coordinate
, который принимает и radius
является удобство initalizer и, следовательно, не отозван из инициализаторов моего подкласса. Также свойства доступны только для чтения, поэтому я не могу установить их из инициализаторов моего подкласса или извне.
Я пробовал много вариаций, но, кажется, что единственный рабочий способ это сделать мое code
свойство необязательным, использовать унаследованное удобство инициализатор для установки координат и радиуса и установить свойство коды впоследствии, как это:
class MyCircle: MKCircle {
var code: String?
}
overlay = MyCircle(centerCoordinate: coord, radius: radius)
overlay.code = code
Я что-то пропустил? Есть ли способ определить один инициализатор удобства, который принимает в этом случае 3 аргумента?
Большое спасибо! :)
Это не отвечает на ваш главный вопрос, но: MKCircle уже имеет два свойства строки, которые он наследует от MKShape: 'title' и' subtitle'. – Anna