如何让位于网站上的标签加载内容?(How do I make a label load conten

2019-08-31 08:06发布

我想打一个标志,显示如果一个乐队在巡演(向下的系统仅供参考)

所以我想在界面标签,即可调整到我的服务器上给定的值。 (因此,它需要从(html的)文件中提取数据并将其显示为一个标签)。

网页视图在我看来凌乱和标签看起来更好。

Answer 1:

我推荐使用AFNetworking - http://afnetworking.com/ 。 它可以让你从你的服务器中提取数据。

例如,您可以创建一个包含你所需要的数据的XML文件。 然后你可以使用的NSXMLParser解析它,做任何你需要的数据。

例:

NSURL *feedURL = [[NSURL alloc] initWithString:@"http://yourserver.com/yourxmlfile.xml"];
NSURLRequest *feedRequest = [[NSURLRequest alloc] initWithURL:feedURL];
AFXMLRequestOperation *feedOperation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:feedRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
    NSLog(@"XMLRequest successful - starting parser..");
    [XMLParser setDelegate:self];
    [XMLParser parse];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {
    UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
    [connectionError show];
}];

XML实例:

这是您要上传到服务器的文件。 我用的标题yourxmlfile.xmlAFXMLRequestOperation ,但称它为任何你想要的。

<?xml version="1.0"?>
<band>
    <bandname>The Band</bandname>
    <bandontour>1</bandontour>
</band>

使用的NSXMLParser(代表团)

创建伊娃(在你的.h),因为它被解析来保存数据。

@property (nonatomic, retain) NSString *currentProperty;

这将暂时保持元素的数据,那么你需要在解析器达到用它做什么didEndElement

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {    
    if ([elementName isEqualToString:@"bandontour"]) {
        // found the <bandontour> tag
    }    
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    self.currentProperty = string;
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([elementName isEqualToString:@"bandontour"]) {
        // finished getting the data in <bandontour>

        // do something now that you've got your data retrieved
        if (self.currentProperty) int bandOnTour = self.currentProperty.intValue;
        if (bandOnTour == 1) self.yourLabel.text = @"Band is on tour!";
        else self.yourLabel.text = @"Not on tour.";
    }  
}

见的NSXMLParser类参考以了解更多信息。



文章来源: How do I make a label load content located on a website?