2015-10-20 5 views
0

Я хочу получить доступ к свойству родительского класса аннотации, который я написал, чтобы проверить его значение.Доступ к родительским свойствам

Annotation.swift

enum AnnotationType: Int { 
    case AnnotationDefault = 0 
    case AnnotationAED 
    case AnnotationResponder 
    case AnnotationIncident 
} 

class Annotation: NSObject, MKAnnotation { 

    var coordinate: CLLocationCoordinate2D 
    var title: String? 
    var subTitle: String 
    var type: AnnotationType 

    init(coordinate: CLLocationCoordinate2D, title: String, subTitle: String, type: AnnotationType) { 
     self.coordinate = coordinate 
     self.title = title 
     self.subTitle = subTitle 
     self.type = type 
    } 

    func getType() -> AnnotationType { 
     return self.type 
    } 
} 

AEDAnnotation.swift

class AEDAnnotation : Annotation { 
    let aed: AED 

    init(aed: AED) { 
     self.aed = aed 
     super.init(coordinate: aed.coordinate, title: aed.street, subTitle: aed.owner, type: aed.annotationType) 
    } 

    func getAnnotationType() -> AnnotationType { 
     return super.getType() 
    } 
} 

создать аннотацию, как это:

let annotation = AEDAnnotation.init(aed: aed) 
self.annotationArray.append(annotation) 

если цикл I через массив, я видеть, что там есть действительные AEDAnnotations. Но почему я не могу получить доступ к базовому свойству Annotation.swift, о котором я прошу.

for item in self.annotationArray { 
    print(item.getType) 
} 

Это не работает. Но как я могу получить доступ к свойству type из Annotation.swift

Сообщение об ошибке я получаю это: Value of type 'MKAnnotation' has no member 'getType'

+0

Вы должны иметь доступ к свойству типа родительского класса на основе вашего кода. Вы говорите, что он не работает, но не дает ошибки, как он не работает? –

+0

Я добавил ошибку на вопрос. Я смущен, почему это элемент типа 'MKAnnotation', где я ожидаю, что он будет иметь тип AEDAnnotation. Когда я печатаю описание 'item', он корректно показывает' AEDAnnotation' как элемент массива. – sesc360

+0

Да, это немного странно. Ваш массив заполняется где угодно, кроме двух строк кода, которые вы включили в свой вопрос? –

ответ

1

Ошибка указывает на то, что item имеет тип MKAnnnotation. Если вы хотите рассматривать его как другой тип, вам нужно будет его бросить. Попробуйте следующее:

for item in self.annotationArray { 
    if let myAnnotation = item as Annotation { 
     print("\(myAnnotation.getType().rawValue)") 
    } 
    else { 
     print("Annotation was not an Annotation type") 
    } 
} 
Смежные вопросы