0

我创建了一个名为“事件”的类。这个类有三个变量。

主文件初始化这个类的一个实例,在我解析一个 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**
    }    
}
4

1 回答 1

0

您在 viewDidLoad 中仅创建了局部变量 eventtoTrovato。如果您不仅想在一种方法中使用它,那么您必须在类中定义变量或属性,例如:

@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];
    }    
}
于 2014-10-17T21:23:12.743 回答