appstore

1.新建一个single view工程

2.导入CFNetwork、MobileCoreServices、SystemConfiguration、libz.1.2.5.dylib系统库

3.导入SDWebImage、ASIHttpRequest开源库

4.修改ViewController.h

    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:self.viewController];
    nc.title  = @"AppStore";
    self.window.rootViewController = nc;
    [nc release];

5.新建一个model类存储每个应用程序的信息

AppItem.h文件

@interface AppItem : NSObject

@property (nonatomic,copy) Nsstring *name,*detailInfo;
@property (nonatomic,retain) NSMutableArray *imageUrlArray;//存放大中小三种图片的网址

@end

AppItem.m文件

@implementation AppItem

@synthesize name = _name,detailInfo = _detailInfo,imageUrlArray = _imageUrlArray;

- (id)init
{
    if (self = [super init]) {
        _imageUrlArray = [[NSMutableArray alloc] init];
    }
    return  self;
}

- (void)dealloc
{
    _imageUrlArray = nil;
    [super dealloc];
}

@end

6.ViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //初始化tableView和dataArray
    _dataArray = [[NSMutableArray alloc] init];
    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0,320,416) style:UITableViewStylePlain];
    _tableView.delegate = self;
    _tableView.dataSource = self;
    [self.view addSubview:_tableView];
    [_tableView release];
    //发送请求
    [self sendRequest];
}
//请求数据
- (void)sendRequest
{
    Nsstring *urlString = [Nsstring stringWithFormat:@"https://itunes.apple.com/cn/RSS/topgrossingipadapplications/limit=30/xml"];
    NSURL *url = [NSURL URLWithString:urlString];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    request.delegate = self;
    [request startAsynchronous];
}

7.成功返回数据之后
- (void)requestFinished:(ASIHTTPRequest *)request
{
    if (_dataArray.count > 0) {
        [_dataArray removeLastObject];
    }
   
    Nsstring *content = [[Nsstring alloc] initWithData:request.responseData encoding:NSUTF8StringEncoding];
    //获取xml文档
    GdataxMLDocument *doc = [[GdataxMLDocument alloc] initWithXMLString:content options:0 error:nil];
    //初始化一个命名空间的字典
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"http://itunes.apple.com/RSS",@"im",@"http://www.w3.org/2005/Atom",@"xmlns",nil];
    //根据命名空间解析doc,获取一个数组,命名空间缺省的是xmlns
    NSArray *array = [doc nodesForXPath:@"//xmlns:entry" namespaces:dict error:nil];
    for (GdataxMLElement *ele in array) {
        
        //获取应用名
        NSArray *titleArray = [ele nodesForXPath:@"xmlns:title" namespaces:dict error:nil];
        GdataxMLElement *titleEle = titleArray.lastObject;
        AppItem *item = [[[AppItem alloc] init] autorelease];
        item.name = titleEle.stringValue;
        
        //获取应用图片
        NSArray *imageArray = [ele nodesForXPath:@"im:image" namespaces:dict error:nil];
        for (GdataxMLElement *imageEle in imageArray) {
            [item.imageUrlArray addobject:imageEle.stringValue];
        }
        [_dataArray addobject:item];
        
        //获取标题
        NSArray *subTitleArray = [ele nodesForXPath:@"xmlns:summary" namespaces:dict error:nil];
        GdataxMLElement *subTitleEle = subTitleArray.lastObject;
        item.detailInfo = subTitleEle.stringValue;
    }
    //刷新表格
    [_tableView reloadData];
}

8.关于tableview的设置
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _dataArray.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ID"];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"ID"];
    }
    AppItem *item = [_dataArray objectAtIndex:indexPath.row];
    cell.textLabel.text = item.name;
    NSURL* imgurl = [NSURL URLWithString:[item.imageUrlArray objectAtIndex:0]];
    NSData *imgData = [[NSData alloc] initWithContentsOfURL:imgurl];
    UIImage *img = [UIImage imageWithData:imgData];
    cell.imageView.image = img;
    cell.detailTextLabel.text = item.detailInfo;
    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 60;
}

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念