2010-03-23 6 views
1

MapKit을 사용하여 각 주석에 (NSString *) itemTag 값을 추가 할 수 있기를 원합니다. myAnnotiation.m 및 myAnnotation.h를 만들었습니다.편집 및 iPhone SDK 프레임 워크?

myAnnotation.h/m에 itemTag를 추가하려고했지만 기본 코드에서 currentAnnotation.itemTag에 액세스하려고하면 "itemID not protocols found"가 표시됩니다. 나는 MapKit.Framework와 MKAnnotation.h에 갔다. itemID를 (NSString *) 추가했지만 프레임 워크에서 .h 파일을 저장할 때 파일 아이콘을 변경하고 다른 모든 것들과 함께 jiving하여 나타나지 않습니다.

도움이나 도움을 얻을 수있는 링크는 크게 감사하겠습니다. 나는 올바른 길을 가고 있는지 확신 할 수는 없지만, "iphone SDK 프레임 워크 수정"이라는 Google 검색 결과는 많이 나타나지 않습니다.

답변

4

왜 프레임 워크를 수정하려고합니까? myAnnotation.hitemID을 속성 또는 인스턴스 변수 (또는 둘 다)로 정의해야합니다. 당신은 currentAnnotation.itemTag 가 작동하지 않는다고 말합니다. 그게 작동하려면, itemTagcurrentAnnotation 클래스에 속한 클래스의 속성으로 정의해야합니다.

프레임 워크의 헤더 파일을 변경하면 다시 컴파일되지 않으므로 작동하지 않습니다.

편집 : 다음은 예제입니다.

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 호출이 설정의 값을 검색하는 (방법 당신을 위해 세터와 게터를 생성합니다 itemID). MyAnnotation.m에서 itemID 값을 얻으려면 self.itemID 또는 [self itemID]을 사용할 수 있으며 self.itemID = @"something" 또는 [self setItemID:@"Something"]을 사용하여 값을 설정할 수 있습니다.

편집 2 :

컴파일러는 주석이 MyAnnotation 클래스의 인스턴스 것을 알고하지 않는 경우, currentAnnotation을 얻을, 그것은 약 itemID를 알 수 없습니다. 그래서 먼저 당신이 당신의 .m 파일의 시작 부분에이 라인을 포함했는지 확인 : 컴파일러는 클래스에 대해 알고 있는지 확인 줘야

#import MyAnnotation.h 

합니다. 당신이 currentAnnotation를 사용하는 경우, 당신은과 같이 MyAnnotation의 인스턴스로 캐스팅 :

(MyAnnotation*)currentAnnotation 

경고를 조용히해야한다고.

+0

죄송합니다. '속성 변수'가 의미하는 바를 명확히 할 수 있습니까? itemID의 인스턴스 변수가 NSString * itemID로 정의되어 있습니다 ...이 작업에 특별한 다른 작업을 수행해야합니까? 코드가 실제로 작동합니다 (원래 mapkit.framework로 되 돌렸을 때). – Chris

+0

편집을 확인하십시오. –

+0

이미 myAnnotation.h/m에 있습니다. 명확히하기 위해 myAnnotation.h/m 및 MapViewController.h/m이 있습니다. MapViewController.h/m 내에서 currentAnnotation.itemID를 사용하려고합니다. 예제와 코드에서 이미 본 내용을 기반으로 myAnnotation.h/m에서 itemID를 정의해야한다고 가정하고 있지만 여전히 "프로토콜에서 찾을 수 없습니다"라는 경고가 표시됩니다. – Chris