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条件が2つあります。したがって、elementNameがempNameの場合、これは出力「empName stored is (null)」に記録されます。しかし、その前に、このログステートメント「要素名は: empName で、その値は:

ABC". 

私の質問は、要素名とその値を知っている場合、なぜその値を保存しないのかということです。null としてログに記録するのはなぜですか? 助けてください。さらに情報が必要な場合は、お問い合わせください。ありがとう

4

1 に答える 1

0

さて、私は解決策を考え出しました。それが正しいかどうかはわかりませんが、欲しいものを手に入れました。私がしたことは、self.empObjectに保存する代わりに、elseブロックで、initParserで作成したNSMutabledictionaryを利用して、値を追加しました。次に、if ブロックでそのディクショナリを使用してキー名で値を取得し (キー名は既にわかっているため)、それらを empNameWithObj に割り当て、ディクショナリで removeAllObjects を実行しました。残りの手順は同じです。出来た。

于 2012-10-15T16:25:46.087 に答える