NSXMLParser委托处理属性
我目前正试图让我的parsing器委托工作与我已经创build的xml的属性我正在接受的自定义NSObject
..
这是正在读入我的parsing器代表的XML
<Rows> <Row SKATERID="706" MANUFACTURER="GAZ" ISFACT="F" ISSKATE="F"/> <Row SKATERID="318" MANUFACTURER="MAN" ISFACT="F" ISSKATE="T"/> //... </Rows>
这就是我对我的-parser:didStartElement:namespaceURI:qualifiedName:attributes:
method:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if ( [elementName isEqualToString:@"Row"]) { manufactureNSObject = [[ManufactureNSObject alloc] init]; manufactureNSObject.ISFACT = [attributeDict objectForKey:@"ISFACT"]; manufactureNSObject.ISSKATE = [attributeDict objectForKey:@"ISSKATE"]; manufactureNSObject.MANUFACTURER = [attributeDict objectForKey:@"MANUFACTURER"]; manufactureNSObject.SKATERID = [attributeDict objectForKey:@"SKATERID"]; NSLog(@"%@ %@ %@ %@", manufactureNSObject.ISFACT, manufactureNSObject.ISSKATE, manufactureNSObject.MANUFACTURER, manufactureNSObject.SKATERID); } }
我的NSLog
打印出所有正确的值罚款,我坚持的下一个部分是- parser:didEndElement:namespaceURI:qualifiedName:
方法,除了didEndElement
正在通过正确…没有什么,这是我的那个方法。
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"%@", elementName); NSLog(@"%@", namespaceURI); NSLog(@"%@", qName); }
这是我的输出从NSLog
的样子。
2011-10-13 10:04:16.529 Code[52605:207] FF GAZ 76 2011-10-13 10:04:16.531 Code[52605:207] Row 2011-10-13 10:04:16.535 Code[52605:207] (null) 2011-10-13 10:04:16.537 Code[52605:207] (null) 2011-10-13 10:04:16.537 Code[52605:207] FT MAN 38 2011-10-13 10:04:16.538 Code[52605:207] Row 2011-10-13 10:04:16.539 Code[52605:207] (null) 2011-10-13 10:04:16.540 Code[52605:207] (null)
我特别想要帮助完成第二种方法,并使这一切正常工作。
迄今为止所有的帮助都非常感谢。
对于正在parsing的xml文件types,
parser:foundCharacters:
从来没有被称为。 这种委托方法在这种情况下被调用:
<mytag>这是标签内容</ mytag>
而在你的情况下,只有属性存在,没有标签内容,即:
<mytag attr1 =“value1”attr2 =“value2”> </ mytag>
至于另一种方法:
parser:didEndElement:
它的实现取决于你。 例如,如果你将一个元素存储在一个临时variables中,那么这个方法在另一个数据结构中复制这个variables是有用的。
创build一个接口NSMutableString
,你可以将string从parser:foundCharacters
传入。 从那里,实现一个类似于parser:didStartElement:
结构parser:didStartElement:
只有这一次,您将使用该NSMutableString
并将其值传递给由正在closures的元素表示的对象。
只要有人在将来检查这个页面,我已经find了如何做到这一点
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"MANUFACTURER",cell.textLabel.text]; NSArray *filterArray = [myDataArray filteredArrayUsingPredicate:predicate]; [[self delegate] setManufactureSearchFields:filterArray withIndexPath:indexPath]; //This is where I pass the value back to the mainview
谓词是你的朋友..他们也擅长从字典中分离出你想要的值…
繁荣!
- 如何从已经在UINavigationController栈中的UIViewController调用一个方法
- awakeFromNib的好处?
- 将委托传递给另一个视图控制器的委托
- 什么是协议和委托,他们如何在IOS中使用?
- iOS Multipeer连接框架invitationHandler似乎不接受?
- 方法不从应用程序委托在iOS调用
- 如何解决“没有已知的select器实例方法performSelector:withObject:afterDelay:'”当迁移到ARC?
- 键盘和光标显示,但我不能在UITextFields和UITextViews内部input
- 为什么不分类UIApplication? 为什么要使用委托?