Google Weather API を解析しようとしています。私は nsxml パーサーを使用して API から日付や天気などを取得し、それらを Core Data に保存しています。
私がやろうとしているのは、パーサーから日付を抽出し、それらを現在の日付と照合して、保存する必要がある情報だけを保存することです。
たとえば、今日の日付が 2011 年 8 月 9 日で、解析結果の日付が一致するとします。パーサーから Core Data に 2 つの情報のみを保存したいと考えています。これらの日付のみを保存しようとしていますが、4 つの情報すべてを Core Data に保存しようとしています。
2011 年 8 月 11 日を指定すると、4 日ではなく 3 日分の情報しか得られないはずですが、それができません。サンプルコードを投稿しています。テストケースを使用してアプリケーションをチェックしています。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([@"forecast_date" isEqualToString:elementName])
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
startDate = [formatter dateFromString:[attributeDict objectForKey:@"data"]];
[formatter release];
}
else if ([@"forecast_conditions" isEqualToString:elementName])
{
isParsingForecast = YES;
isParsingInformation = NO;
isParsingCurrent = NO;
newdate=[startDate addTimeInterval:60*60*24*[forecastConditions count]];
NSMutableDictionary *fields = [[NSMutableDictionary alloc] init];
[fields setObject:newdate forKey:@"date"];
[fields setObject:city forKey:@"city"];
[fields setObject:state forKey:@"state"];
[fields setObject:country forKey:@"country"];
[fields setObject:startDate forKey:@"startdate"];
//[fields setObject: forKey:<#(id)#>]
[forecastConditions addObject:fields];
[fields release];
}
else if (isParsingForecast) {
NSMutableDictionary *fields = [forecastConditions lastObject];
NSLog(@"dic is : %@ \n\n",fields);
[fields setObject:[attributeDict objectForKey:@"data"] forKey:elementName];
}
}
私のコード全体をここに投稿 http://www.iphonedevsdk.com/forum/iphone-sdk-development/87475-coredata-storing-more-values-than-what-required-store-database.html#post363100