Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
Alex2301
-21 / 0 / 0
Регистрация: 14.06.2013
Сообщений: 33
#1

KissXML - Программирование iOS/iPhone

27.03.2014, 13:25. Просмотров 462. Ответов 0
Метки нет (Все метки)

Привет всем, может кто подскажет как с помощью блоков можно заменить делегирование, как я понял нужно его использовать во viewDidLoad.





Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//
//  ViewController.m
//  RSSReader
//
//  Created by admin on 3/25/14.
//  Copyright (c) 2014 admin. All rights reserved.
//
 
#import "ViewController.h"
#import "WebViewController.h"
#import "InternetGateway.h"
#import "Item.h"
#import "AFNetworking.h"
#import "CustomCell.h"
#define RssFilePath    PathForXMLResource(@"0")
 
@interface ViewController ()
 
@end
 
@implementation ViewController
 
@synthesize mainTV, gateway;
 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
 
-(void)loadView
{
 
    UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    contentView.autoresizesSubviews = YES;
    contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    contentView.backgroundColor = [UIColor clearColor];
    
    
    [self setView:contentView];
    
    mainTV = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    [mainTV setAutoresizesSubviews:YES];
    [mainTV setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    
    
    [mainTV setDataSource:self];
    [mainTV setDelegate:self];
    
    [self.view addSubview:mainTV];
    
    
}
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"News";
    AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:(@"http://rf-lenta.ru/engine/rss.php")]];
    [client getPath:@"rss/0.xml" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *rss = nil;
        if ([responseObject isKindOfClass:[NSData class]]) {
            rss = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
        } else {
            rss = (NSString *)responseObject;
        }
        InternetGateway *parser = [[InternetGateway alloc] initWithRssFile:rss];
 
   }
    failure:^(AFHTTPRequestOperation *operation, NSError *error) {
               _items=gateway.results;
              [self.mainTV reloadData];
    }];
    
    
    
    
    
    
    
    
    
    
    
    
    
    
////    self.gateway = [[InternetGateway alloc] init];
//    
//    __block InternetGateway* gatewayin = [[InternetGateway alloc] init];
//    [gatewayin parse:^{
//        _items=gateway.results;
//        [self.mainTV reloadData];
//    }];
////        _items=gateway.results;
////        [self.mainTV reloadData];
 
}
 
 
- (void)RssParser:(InternetGateway *)parser didParseWithResult:(id)result
{
    _items=result;
           [self.mainTV reloadData];
}
 
#pragma mark - Table data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.items count];
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *identifier = @"Cell";
    CustomCell *cell = (CustomCell *)[mainTV dequeueReusableCellWithIdentifier:identifier];
    if ( !cell ) {
            cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
        [cell setAccessoryType:(UITableViewCellAccessoryDisclosureIndicator)];
    }
    [self configureCell:cell atIndexPath:indexPath];
    return cell;
}
 
- (void)configureCell:(CustomCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    Item *item = self.items[indexPath.row];
    cell.titleLabel.text = item.title;
    cell.titleLabel.font = [UIFont fontWithName:@"Helvetica" size:20.0];
    cell.titleLabel.textColor = [UIColor darkTextColor];
    cell.descriptionLabel.text = item.shortDesc;
    cell.descriptionLabel.font = [UIFont fontWithName:@"Helvetica" size:12.0];
    cell.descriptionLabel.textColor = [UIColor lightGrayColor];
}
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 120;
}
 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    Item *item = [self.items objectAtIndex:indexPath.row];
    WebViewController *webVC = [[WebViewController alloc] initWithNibName:nil bundle:nil];
    webVC.requestURL = item.link;
    [self.navigationController pushViewController:webVC animated:YES];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}
 
@end




Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//
//  InternetGateway.m
//  RSSReader
//
//  Created by admin on 3/26/14.
//  Copyright (c) 2014 admin. All rights reserved.
//
#import "Item.h"
#import "InternetGateway.h"
//#define URLFromString(str)   [NSURL URLWithString:str]
@implementation InternetGateway
@synthesize myItem, results;
 
- (id)initWithRssFile:(NSString *)rssFile
{
    self = [super init];
    if (self) {
        _rssFile = rssFile;
         myItem = [[Item alloc] init];
    }
    return self;
}
 
- (void)parse
{
    if (self.rssFile == nil)
        return;
    
    dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(concurrentQueue, ^{
        [self parseWithXMLString:self.rssFile];
    });
}
 
#pragma mark - Private method
- (void)parseWithXMLString:(NSString *)xmlString
{
    NSError *error = nil;
    DDXMLDocument *document = [[DDXMLDocument alloc] initWithXMLString:xmlString options:0 error:&error];
    
    if (error)
    {
        NSLog(@"Failed to create XML document for reason: \n%@", error);
    }
    else
    {
        [self parseWithDocument:document];
    }
 
}
 
 
 
 
-(NSMutableArray*)parseWithDocument:(DDXMLDocument *)document
{
 //  NSMutableArray* results = [[NSMutableArray alloc] init];
    NSArray *nodes = [document nodesForXPath:@"/rss/channel/item" error:nil];
        results = [[NSMutableArray alloc] init];
        for (NSInteger i = 0; i < [nodes count]; i++) {
            [self parseXMLNodeForItem:(nodes[i])];
            [results addObject:myItem];
        }
// [self notifyTheDelegateWithResult:results];
    return results;
    NSLog(@"results= %@", results);
 ///   [self notifyTheDelegateWithResult:results];
}
 
 
 
 
-(id)parseXMLNodeForItem:(DDXMLElement *)element
{
    NSString *desc = [[[element elementsForName:@"description"] lastObject] stringValue];
    NSMutableString *outString;
    if (desc)
    {
        outString = [[NSMutableString alloc] initWithString:desc];
        if ([desc length] > 0)
        {
            NSRange r;
            while ((r = [outString rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
            {
                [outString deleteCharactersInRange:r];
            }
        }
    }
    NSString *title = [[[element elementsForName:@"title"] lastObject] stringValue];
    NSString *shortDesc = outString;
    NSString *linkString = [[[element elementsForName:@"link"] lastObject] stringValue];
    
    myItem.link = [NSURL URLWithString:linkString];
    myItem.title = title;
    myItem.shortDesc = shortDesc;
    return myItem;
    
}
 
//#pragma mark - Notify the delegate
//- (void)notifyTheDelegateWithResult:(id)result
//{
//    dispatch_async(dispatch_get_main_queue(), ^{
//                   [self.delegate RssParser:self didParseWithResult:result];
//    });
//}
 
@end
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 13:25     KissXML
Посмотрите здесь:

Парсинг xml документа с использованием KissXML

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru