내 프로젝트에서 NSXMLParser를 사용하여 XML 문자열에서 날짜 목록을 가져옵니다. 파서에 정보를 넣습니다 (DatesXML라는) 목적은 다른 많은 속성들 사이isEqualToDate를 사용할 때 "인식 할 수없는 선택기"오류 : NSXMLParser로 날짜 정보를 가져올 때 [NSDate date]
@property (nonatomic,strong) NSDate *DATE;
@property (nonatomic,strong) NSString *NAME;
있습니다.
내 파서는 DatesXML 개체의 배열 (dateItemsFromXML)을 반환합니다. 파서 완료 후, 나는 나중에 내가이 if
문에에 "알 수없는 선택"오류를 받고 있어요
if ([[datesFromXMLDictionary objectForKey:@"OneOfMyNames"] isEqualToDate:[NSDate date]])
을
NSMutableDictionary *datesFromXMLDictionary = [[NSMutableDictionary alloc] init];
for (DatesXML *item in dateItemsFromXML)
{
[datesFromXMLDictionary setValue:item.DATE forKey:item.NAME];
}
을한다. 나는 브레이크 포인트를 넣었고 po [datesFromXMLDictionary objectForKey:@"OneOfMyNames"]
을 콘솔에 넣으면 (id) ... 12/3/2012
이 나옵니다.
콘솔에서 NSDate 객체 대신 id 객체라고 알려주는 이유는 무엇입니까? 사전에 (또는 그 문제의 다른 곳에서) 입력 할 때 정보가 손실 되었습니까?
** 정확한 ** 오류 메시지를 게시하십시오. 그리고'item.DATE' 클래스를 확인하십시오. NSString이 아닌 NSString이라고 생각합니다. –
@MatthiasBauch : 나는 그렇게 생각하지 않는다. - item은'DatesXML' 객체이고 NAME 속성은 내 .h에서 NSDate로 선언되므로 NSDate 객체인지 확인해야한다. 그렇지 않으면'for' 루프에있는 날짜에 문자열을 보내는 중이라는 컴파일 오류가 발생합니다. – GeneralMike
그것은 NSDate로 선언되어 있지만, 당신은 그 변수에 어떤 객체라도 할당 할 수 있습니다. NSString을 할당 한 것 같습니다. NSArray, NSDictionary 또는'id'를 반환하는 다른 메서드에서 NSString을 얻으면 컴파일러 경고를 얻지 못합니다. –