我正在尝试解析谷歌天气 API。我正在使用 nsxml 解析器从 api 获取日期、天气等,然后将它们存储在 Core Data 中。
我想做的是从解析器中提取日期,将它们与当前日期匹配,然后只存储我们需要存储的尽可能多的信息。
比如说,今天的日期是 08/09/2011 并且解析匹配的日期。我希望只将解析器中的 2 个信息存储到核心数据中。我试图只存储那些日期,但我将所有 4 个信息都存储到核心数据中。
如果我给出 2011 年 8 月 11 日,我应该只得到 3 天的信息而不是 4 天。但我无法做到这一点。我正在发布我的示例代码。我正在使用测试用例来检查我的应用程序。
- (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