我将我网站上的数据同步到我的应用程序,我正在使用NSXMLParser来执行此操作。问题是我将数据库中的所有字段定义为字符串。当所有内容都是一个字符串时,同步过程工作正常,但当我尝试将此数据用于其他目的时,这会让我感到心痛。
任何人都可以帮助我使用正确的数据类型为同步过程定义我的字段,代码如下:
的.m
// Array for WORKOUT.
NSMutableString *currentID, *currentUserID, *currentWalkID, *currentDate, *currentDistance, *currentRepeats, *currentType, *currentIntensity,
*currentComments, *currentTime, *currentWeight, *currentHeight;
我知道它与这个NSMutableString有关,显然一切都被定义为一个字符串。
·H
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
currentElement = [elementName copy];
// Check for the WORKOUT details in the XML feed.
if ([elementName isEqualToString:@"workout"])
{
// clear out our workout item caches...
item = [[NSMutableDictionary alloc] init];
currentID = [[NSMutableString alloc] init];
currentUserID = [[NSMutableString alloc] init];
currentWalkID = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
currentDistance = [[NSMutableString alloc] init];
currentRepeats = [[NSMutableString alloc] init];
currentType = [[NSMutableString alloc] init];
currentIntensity = [[NSMutableString alloc] init];
currentComments = [[NSMutableString alloc] init];
currentTime = [[NSMutableString alloc] init];
currentWeight = [[NSMutableString alloc] init];
currentHeight = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"workout"])
{
Workout *newWorkout = [NSEntityDescription insertNewObjectForEntityForName:@"Workout" inManagedObjectContext: self.managedObjectContext];
// save values to an item, then store that item into the array...
[item setObject:currentID forKey:@"workout_id"];
[item setObject:currentUserID forKey:@"workout_user_id"];
[item setObject:currentWalkID forKey:@"workout_walk_id"];
[item setObject:currentDate forKey:@"workout_date"];
[item setObject:currentDistance forKey:@"workout_distance"];
[item setObject:currentRepeats forKey:@"workout_repeats"];
[item setObject:currentType forKey:@"workout_type"];
[item setObject:currentIntensity forKey:@"workout_intensity"];
[item setObject:currentComments forKey:@"workout_comments"];
[item setObject:currentTime forKey:@"workout_time"];
[item setObject:currentWeight forKey:@"workout_weight"];
[item setObject:currentHeight forKey:@"workout_height"];
newWorkout.workout_id = currentID;
newWorkout.workout_user_id = currentUserID;
newWorkout.workout_walk_id = currentWalkID;
newWorkout.workout_date = currentDate;
newWorkout.workout_distance = currentDistance;
newWorkout.workout_repeats = currentRepeats;
newWorkout.workout_type = currentType;
newWorkout.workout_intensity = currentIntensity;
newWorkout.workout_comments = currentComments;
newWorkout.workout_time = currentTime;
newWorkout.workout_weight = currentWeight;
newWorkout.workout_height = currentHeight;
[self.workoutArray addObject:newWorkout];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
// save the characters for the current item...
if ([currentElement isEqualToString:@"workout_id"]) {
[currentID appendString:string];
} else if ([currentElement isEqualToString:@"workout_user_id"]) {
[currentUserID appendString:string];
} else if ([currentElement isEqualToString:@"workout_walk_id"]) {
[currentWalkID appendString:string];
} else if ([currentElement isEqualToString:@"workout_date"]) {
[currentDate appendString:string];
} else if ([currentElement isEqualToString:@"workout_distance"]) {
[currentDistance appendString:string];
} else if ([currentElement isEqualToString:@"workout_repeats"]) {
[currentRepeats appendString:string];
} else if ([currentElement isEqualToString:@"workout_type"]) {
[currentType appendString:string];
} else if ([currentElement isEqualToString:@"workout_intensity"]) {
[currentIntensity appendString:string];
} else if ([currentElement isEqualToString:@"workout_comments"]) {
[currentComments appendString:string];
} else if ([currentElement isEqualToString:@"workout_time"]) {
[currentTime appendString:string];
} else if ([currentElement isEqualToString:@"workout_weight"]) {
[currentWeight appendString:string];
} else if ([currentElement isEqualToString:@"workout_height"]) {
[currentHeight appendString:string];
}
答案 0 :(得分:0)