0

私のプロジェクトでは、NSXMLParserを使用してXML文字列から日付のリストを取得します。パーサーが情報を入れるオブジェクト(DatesXMLと呼ばれる)には、

@property (nonatomic,strong) NSDate *DATE;
@property (nonatomic,strong) NSString *NAME;

他の多くのプロパティの中で。

私のパーサーは、DatesXMLオブジェクトの配列(dateItemsFromXMLと呼ばれる)を返します。パーサーが終了した後、私はします

NSMutableDictionary *datesFromXMLDictionary = [[NSMutableDictionary alloc] init];
for (DatesXML *item in dateItemsFromXML)
{
    [datesFromXMLDictionary setValue:item.DATE forKey:item.NAME];
}

後で、私はします

if ([[datesFromXMLDictionary objectForKey:@"OneOfMyNames"] isEqualToDate:[NSDate date]])

ifこのステートメントで「認識されないセレクター」エラーが発生します。ブレークポイントを設定po [datesFromXMLDictionary objectForKey:@"OneOfMyNames"]し、コンソールに配置すると、を取得し(id) ... 12/3/2012ます。

コンソールがNSDateオブジェクトではなくidオブジェクトであると表示するのはなぜですか?その情報は、辞書(またはそのことについては他の場所)に入れられたときに失われますか?

4

1 に答える 1

0

コメントでMatthiasBauchが指摘したように、私の問題の根本は、.DATEプロパティにNSStringが含まれていることが原因でした。パーサーがDatesXMLオブジェクトをロードしているとき、デフォルトではすべてを文字列としてロードします。その結果、.DATEはNSDateであると想定されていても、.DATEプロパティに文字列をロードしました(そしてサイレントにロードしました)。

NSDateFormatterをパーサーに入れてxmlからの文字列をNSDateに変換し、そのNSDateを.DATEプロパティに入れます。これにより、発生していたエラーが解消され、コードの他の場所で.DATEプロパティを使用しようとしたときに期待したすべての動作が得られました。

于 2012-12-06T18:00:59.607 に答える