कस्टम एनोटेशन, 'अज्ञात गेटर विधि को एक्सेस करना'

वोट
0

मैं एक कस्टम MKAnnotation वर्ग, MapLocation कर दिया है। मैं कोई परेशानी नहीं स्थापित करने या प्राप्त करने के गुण, एक MKAnnotationView बनाने के लिए इस विधि को छोड़कर आ रही है। के बाद से यह टिप्पणी की सूची से एक स्थान प्रकार खोज और annotationView के लिए कस्टम एनोटेशन छवियों का एक परिवार से एक का चयन करने के लिए चाहिए था मैं, इसे यहाँ की ज़रूरत है।

MapLocation.h और मीटर में कस्टम getters और setters की स्थापना में कई प्रयासों के बाद, मैं इसे जहां मैं भी, (अनिवार्य) गेटर, शीर्षक कॉपी नहीं कर सकते TITLE2 के लिए यह नाम बदलें, और अपनी वापसी मूल्य प्राप्त करने की कोशिश करने के लिए नीचे उबला हुआ । यह मेरा कोड है:

-(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *placemarkIdentifier=@Map Location Identifier;
NSString *str1=annotation.title;
NSString *str2=annotation.title2;
if([annotation isKindOfClass:[MapLocation class]]) {
    MKAnnotationView *annotationView=(MKAnnotationView *)[theMapView dequeueReusableAnnotationViewWithIdentifier:placemarkIdentifier];
    if (annotationView==nil) {
        annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:placemarkIdentifier];
    }
    else
        annotationView.annotation=annotation;


    return annotationView;
}
return nil;

}

4 लाइन पर, शीर्षक सही ढंग से दिया जाता है, लेकिन कॉपी किया विधि के लिए 5 वीं लाइन की कॉल विषय में त्रुटि संदेश प्राप्त होते हैं।

मैं XCode डॉक्स में देखने के लिए किया था, लेकिन मैं शायद सिर्फ नहीं मिल रहा है यह इतना इस विधि इसे देखता है की घोषणा करने के लिए कैसे। अजीब यह शीर्षक गेटर, लेकिन नहीं TITLE2 प्रतिलिपि देखता है कि।

18/05/2010 को 15:42
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

यह करने के लिए डॉट नोटेशन से लाइन बदलने का प्रयास करें:

NSString *str2=[annotation title2];

और त्रुटि दूर जाना चाहिए।

क्या हो रहा है संकलक बताया गया है कि कि एनोटेशन एक है MKAnnotation। सच है कि आप जानते हैं कि क्या अन्य तरीकों यह मिला है irrelevent है; संकलक मानसिक नहीं है - यह सब जानता है कि एनोटेशन MKAnnotation प्रोटोकॉल, ज्यादा कुछ नहीं इस प्रकार है। कारण यह है कि यह शीर्षक गेटर देखता है क्योंकि शीर्षक MKAnnotation में परिभाषित किया गया है है।

तुम भी एक डाली का उपयोग करके इसे ठीक कर सकते हैं:

MapLocation *mapLocation = (MapLocation *)annotation;

अब, आप कह सकते हैं

NSString *str2=mapLocation.title2;

क्योंकि आप संकलक कि mapLocation एक MapLocation obejct है बता दिया है।

18/05/2010 को 15:48
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more