提问人:Michael Md Di Pietro 提问时间:10/18/2014 最后编辑:CœurMichael Md Di Pietro 更新时间:7/16/2017 访问量:87
XML 解析并将变量设置为实例
XML Parsing and set variables to instance
问:
我创建了一个名为“event”的类。此类有三个变量。
主文件初始化此类的实例,在我解析 xml 文件后,但当我去检索创建的实例时,我无法识别。
我哪里错了?
#import "mkViewController.h"
#import "evento.h"
@interface mkViewController ()
@end
@implementation mkViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://xxxxx.it/xxx.xml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
NSMutableArray *datiEvento = [NSMutableArray array];
evento *eventoTrovato = [[evento init]alloc];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
element = elementName;
if ([element isEqualToString:@"evento"]) {
// Create la array dell'evento
eventoTrovato.nome = string; **<--- not found eventoTrovato instace**
}
}
答:
0赞
kabarga
10/18/2014
#1
您在 viewDidLoad 中仅创建了局部变量 eventoTrovato。如果你不仅想在一个方法中使用它,那么你必须在你的类中定义变量或属性,比如:
@interface mkViewController ()
@property (nonatomic, strong) evento *eventoTrovato;
@end
.....
- (void)viewDidLoad
{
.......
self.eventoTrovato = [evento new];
}
- (void)parser.........
{
.......
_eventoTrovato.nome = string;
}
另一件事是,如果你想将许多元素存储到数组中。代码如下所示:
@interface mkViewController ()
@property (nonatomic, strong) NSMutableArray *datiEvento;
@end
- (void)viewDidLoad
{
.......
self.datiEvento = [NSMutableArray array];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
element = elementName;
if ([element isEqualToString:@"evento"]) {
evento *eventoTrovato = [evento new];
eventoTrovato.nome = string;
[self.datiEvento addObject:eventoTrovato];
}
}
评论
0赞
Michael Md Di Pietro
10/18/2014
非常感谢您的回答,但是每当它找到一个元素时这样做并不总是覆盖相同的实例?如果 volesi 对于找到的每个元素,我都会创建一个新的事件对象,并在数组中将其添加到最后?
0赞
Michael Md Di Pietro
10/18/2014
但感谢 eventoTrovato * 对象没有被覆盖 cn 总是发现新数据?当我在调用后去添加数组时,我没有发现很多元素都相等?
0赞
kabarga
10/18/2014
它是本地实例,因此您可以创建一个,设置字符串并添加到数组中并将其保留在那里。下次再添加一个...如果找不到任何内容,则 [self.datiEvento count] 将为 0。如果你能找到 5,那么 [self.datiEvento count] == 5。5 元素 isKindOfClass evento
评论