まったく同じ文字列が 2 つありますが、それらは等しいものとして比較されていません。1 つの文字列は変更可能な文字列で、もう 1 つは通常の文字列です。2 つの文字列が等しいかどうかを確認する if ステートメントがあります。2 つの文字列の出力は次のとおりです。
2013-04-08 09:09:31.555 Pin2Own[650:1303] 6447 E Crocus Dr
2013-04-08 09:09:31.555 Pin2Own[650:1303] 6447 E Crocus Dr
上が変更可能な文字列で、下が通常の文字列です。可変文字列を通常の文字列に変換しようとしましたが、同じ問題が発生しています。NSXMLParser サブクラスの xml ドキュメントから変更可能な文字列を取得し、シングルトンの変更可能な配列からもう一方を取得しています。NSXMLParser クラスのコードは次のとおりです。
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
address = nil;
zpid = nil;
}
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"street"])
address = [[NSMutableString alloc] init];
if ([elementName isEqualToString:@"zpid"])
zpid = [[NSMutableString alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if(address)
[address setString:string];
else if(zpid)
[zpid setString:string];
}
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"street"])
NSLog(@"%@", address);
if ([elementName isEqualToString:@"zpid"])
NSLog(@"zip id is: %@", zpid);
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSMutableArray *annotations = [[Data singleton] annotations];
for (MapPoint *mp in annotations)
{
NSLog(@"%@", mp.fullAddress);
if ([mp.fullAddress isEqualToString:address])
{
mp.zpid = zpid;
}
else
{
NSLog(@"Did not match address");
}
}
}
SO 私は 2 つのアドレスを比較し、アドレスが同じである場合はプロパティを設定しています。これは常に true になることを確認しています。何か問題があるかどうかは誰にもわかりますか?なぜこれが起こっているのか、私には本当にわかりません。