0
if([elementName isEqualToString:@"EmpWithNameAndID"]){
    [emps addObject:empObject];
    NSLog(@"count of emps is : %d",emps.count);

    self.managedObjectContext = appDelegate.managedObjectContext;

    EmpWithName *empWithNameObj = [NSEntityDescription insertNewObjectForEntityForName:@"EmpWithName"
                                                                inManagedObjectContext:self.managedObjectContext];
    if(!self.empObject){
        NSLog(@"Not nil");}
    else {
        NSLog(@"Yo Nil");
    }

    empWithNameObj.empID =self.empObject.empID;//@"123"
    empWithNameObj.empName =self.empObject.empName;//@"ABC"

    NSLog(@"emp object id is: %@",empWithNameObj.empID);
    NSLog(@"emp name is %@",empWithNameObj.empName);


    if(self.managedObjectContext == nil)
    { NSLog(@"S MOC is nil");}
    else {
        NSLog(@"S MOC is Not NIL");
    }

    NSError *error;
    if(![self.managedObjectContext save:&error]){
        NSLog(@"Failed to save the object");
    }
    else {

        NSLog(@"saved object");
    }
    if(error == nil)
    {
        NSLog(@"Good saved");
    }
    else {
        NSLog(@"something went wrong while saving");
    }
}
else {

    if([elementName isEqualToString:@"empName"] || [elementName isEqualToString:@"EmpID"]){

        NSLog(@"Element name is: %@ and its value is : %@ ",elementName,currentElementValue);

        if(!empObject)
        {
            NSLog(@"just empobject not nil");
        }
        else {
            NSLog(@"its nil.empobject");
        }


        if(!self.empObject){
            NSLog(@"Not nil");}
        else {
            NSLog(@"Yo Nil");
        }

        [self.empObject setValue:currentElementValue forKey:elementName];

            if([elementName isEqualToString:@"empName"]){
            NSLog(@"empName stored is %@", self.empObject.empName);
        }
        if([elementName isEqualToString:@"EmpID"]){
            NSLog(@"EmpID value stored is %@",self.empObject.empID);
        }
        currentElementValue = nil;
    }
}

所以上面所有的代码都在 NSXMLParser 的 didEndElement 中。在代码末尾的 else 部分中,就在我将 currentElementValue 设置为 nil 之前,我有两个 if 条件。因此,当 elementName 为 empName 时,它​​会将其记录到输出“empName stored is (null)”中。但在此之前我有这个日志语句“元素名称是:empName,它的值是:

ABC". 

所以我的问题是它是否知道元素名称和它的值为什么它不保存它的值。为什么他们记录为空值?请帮忙。如果需要更多信息,请询问。谢谢

4

1 回答 1

0

好吧,我想出了一个解决方案。我不知道这是否正确,但我得到了我想要的。我所做的是在 else 块中而不是保存到 self.empObject 我使用了我在 initParser 中创建的 NSMutabledictionary 并将值添加到它们。然后在 if 块中使用该字典按键名检索值(因为我已经知道键名)并将它们分配给 empNameWithObj 并在字典上执行 removeAllObjects 。其余程序相同。有效。

于 2012-10-15T16:25:46.087 回答