Hello,
I syncing the data on my website to my app, I'm using NSXMLParser to do this. The problem is I have all the fields on my database defined as Strings. The sync process works fine when everything is a string, but this is causing me heartache further down the line when I try and use this data for other purposes.
Can anyone help me with defining my fields with the correct data types for the sync process, code below:
.m
// Array for WORKOUT.
NSMutableString *currentID, *currentUserID, *currentWalkID, *currentDate, *currentDistance, *currentRepeats, *currentType, *currentIntensity,
*currentComments, *currentTime, *currentWeight, *currentHeight;
I know its something to do with this NSMutableString, obviously everything is defined as a string.
.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];
}