क्यों आप ढांचे को संशोधित करने की कोशिश कर रहे हैं? आप को परिभाषित किया जाना चाहिए itemIDकिसी संपत्ति या उदाहरण चर (या दोनों) के रूप में myAnnotation.h। आप कहते हैं कि currentAnnotation.itemTag
काम नहीं किया; कि काम करने के लिए, आप है की जरूरत है itemTagएक संपत्ति वर्ग जो कुछ के रूप में परिभाषित किया currentAnnotationके अंतर्गत आता है।
ढांचे के लिए हेडर फाइल बदलने यह पुन: संयोजित नहीं होगा, इसलिए आपको लगता है कि काम करने के लिए प्राप्त करने में सक्षम नहीं होगा।
संपादित करें: यहाँ एक उदाहरण है।
में MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
में MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
@propertyकॉल संपत्ति को परिभाषित करता है और @synthesizeकॉल आप के लिए setters और getters पैदा करेगा (तरीकों की स्थापना की और से मान प्राप्त करने के लिए itemID)। में MyAnnotation.m, आप उपयोग कर सकते हैं self.itemIDया [self itemID]के मूल्य प्राप्त करने itemID, और आप उपयोग कर सकते हैं self.itemID = @"something"या [self setItemID:@"Something"]मान सेट करने के।
संपादित करें 2:
जब आप प्राप्त currentAnnotationहै, अगर संकलक नहीं जानता है कि एनोटेशन अपने MyAnnotation वर्ग का एक उदाहरण है, इसके बारे में पता नहीं होगा itemID। तो, पहले सुनिश्चित करें कि आप अपने की शुरुआत में इस लाइन को शामिल किया है .mफ़ाइल:
#import MyAnnotation.h
यही कारण है कि यह सुनिश्चित wil कि संकलक वर्ग के बारे में जानता है। जब आप का उपयोग currentAnnotation, आप इसे का एक उदाहरण के रूप में कास्ट MyAnnotationइसलिए की तरह:
(MyAnnotation*)currentAnnotation
यही कारण है कि नीचे चेतावनी शांत करना चाहिए।