数据类型和XMLParser

时间:2010-07-23 09:45:11

标签: iphone xcode types

我将我网站上的数据同步到我的应用程序,我正在使用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];
} 

1 个答案:

答案 0 :(得分:0)