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

Не получается передать результат парсинга в другой контроллер - Программирование iOS

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование iOS Контроль установленных приложений http://www.cyberforum.ru/ios-dev/thread1351433.html
Добрый день. У нас есть партнёрская программа, участники которой получают деньги за установку приложений рекламодателей на своё устройство. Пока мы работали только с Android, но сейчас решили двигаться в сторону iOS. Под Android у нас есть собственное приложение, которое устанавливают пользователи. Это приложение загружает с сервера задания на выполение и контролирует это. Текущая задача -...
Программирование iOS Ошибки при подключении AFNetworking При подключении к проекту библиотеки AFNetworking появляются ошибки при билде проекта. При этом ошибки высвечивает в самой библиотеке. Библиотеку качал с гитХаба ихнего, там ничего не ковырял, но она все равно не работает. http://www.cyberforum.ru/ios-dev/thread1348535.html
Дефолтный вид клавиатуры в iOS 8.1 Программирование iOS
Доброго времени суток. Ситуация такая: заказчик скидывает скрин клавиатуры в iOS 8.1 в каком-то стандартном приложении (http://www.imageup.ru/img219/2001754/fullsizerender-5.jpg.html) и скрин клавиатуры в нашем приложении (http://www.imageup.ru/img219/2001757/fullsizerender-4.jpg.html), на них видна разница в отступах между рядами кнопок и в высоте кнопок, и говорит, что хочет в приложении...
Модель приложения Программирование iOS
Здравствуйте. Помогите с построением правильной модели приложения, т.е. сколько классов нужно сделать и что куда разбросать. У меня приложение делает запрос нбольша сайт, получает json, распарсивает его, паралельно все данные сохраняются в coreData. Картинки (ие, для detailView) скачиваются в фоновом потоке и сохраняются в папку documents на устройстве, для работы с сетью и загрузки картинок...
Программирование iOS Plist или coreData http://www.cyberforum.ru/ios-dev/thread1346013.html
Вечер добрый. Хотелось бы спросить у опытных разработчиков что и когда использовать (например если данных до 100 то plist, а если больше то CoreData) ну или другие варианты? С coreData я знаком (поверхностно), но обычно в кордату заносятся данные уже в процессе работы с приложением, а с plist можно работать когда данные нужны со старта приложения, например список рецептов.
Программирование iOS Архитектура для сетевого взаимодействия в приложении Всем новогодний привет!)) Хотел бы поинтересоваться, как кто предпочитает организовывать у себя в проектах взаимодействие с server side? У своих коллег вижу преимущественно что-то вроде синглтона, у которого есть куча методов с сигнатурой "запросить/отправить нечто с completion block'ом". Как я пока из своего полуторагодового опыта понял, это самый распространенный вариант. Однажды мне... подробнее

Показать сообщение отдельно
Slava-hacker32
7 / 7 / 0
Регистрация: 16.11.2011
Сообщений: 242

Не получается передать результат парсинга в другой контроллер - Программирование iOS

12.01.2015, 13:12. Просмотров 432. Ответов 2
Метки (Все метки)

Здравствуйте. Поясните почему возникает такая ситуация. У меня есть класс наследник NSOperation. В этом классе происходит парсинг xml после того как он отпарсит то результативный массив (массив словарей) должен отправляться в tableView. В методе main (класса парсинга), в которой и происходит отправка результата, но она не срабатывает если нету NSLog. То есть если я перед отправкой проверяю (чисто для себя) есть там данные или нет то массив отправляется, но если я этот NSLog уберу то отправки не происходит, принимающий массив пуст и как результат в TableView ничего нету. Я не могу понять как NSLog может влиять на отправку? В feedArray должен передаться appRecordList.

Код где я запускаю этот парсинг:
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
-(void)startingParse: (NSData*)data  {
    self.queue = [[NSOperationQueue alloc]init];
    
    
    VRParser *parser = [[VRParser alloc]init];
    parser.dataXml = data;
    NSLog(@"data %@", data);
    __weak VRParser *weakParser = parser;
    
    parser.completionBlock = ^{
        if (weakParser.appRecordList) {
            dispatch_async(dispatch_get_main_queue(), ^{
                
               
                VRRootViewController *rootViewController = (VRRootViewController*)[(UINavigationController*)self.window.rootViewController topViewController];
                
                
                rootViewController.feedsArray = weakParser.appRecordList;
                [rootViewController.tableView reloadData];
                
                
                
                NSLog(@"/n/n/n/HELLLO/n/n/n/n");
                NSLog(@"\n\n\n------------------\n");
                NSLog(@"Parse rootViewController feed = %@", rootViewController.feedsArray);
                NSLog(@"\n\n\n--------\nParse feed = %@", weakParser.appRecordList);
            });
        }
        self.queue = nil;
        
    };
    [self.queue addOperation:parser];
}
А это код самого парсинга

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
//
//  VRParser.m
//  rssReader
//
//  Created by Admin on 06.01.15.
//  Copyright (c) 2015 admin. All rights reserved.
//
 
#import "VRParser.h"
 
@interface VRParser ()
{
    NSXMLParser* parser;
    NSMutableArray* feeds;
    NSMutableDictionary *item;
    NSMutableString* title;
    NSMutableString *pubDate;
    NSMutableString * author;
    NSMutableString *link;
    NSMutableString *description;
    NSString *element;
}
 
@end
 
 
 
@implementation VRParser
@synthesize feeds = _feeds;
-(void)main {
    _feeds = [[NSMutableArray alloc]init];
  //  NSURL *url = [NSURL URLWithString:
               //   @"http://rss.cbc.ca/lineup/topstories.xml"];
 
    
    parser = [[NSXMLParser alloc]initWithData:self.dataXml];
  
   
    [parser setDelegate:self];
    [parser setShouldResolveExternalEntities:NO];
    [parser parse];
    
    
    if (![self isCancelled])
    {
        // Set appRecordList to the result of our parsing
        self.appRecordList = self.feeds;
        NSLog(@"self.appRecordList %@",  self.appRecordList);
         }
 
    
    NSLog(@"VRParser  main");
}
 
 
#pragma mark - Parser
 
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    element = elementName;
    
    NSLog(@"VRParser  didStartElement");
    
    if ([element isEqualToString:@"item"]) {
        item = [[NSMutableDictionary alloc]init];
        title = [[NSMutableString alloc]init];
        link = [[NSMutableString alloc]init];
        pubDate = [[NSMutableString alloc]init];
        author = [[NSMutableString alloc]init];
        description = [[NSMutableString alloc]init];
    }
}
 
 
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError
{dispatch_sync(dispatch_get_main_queue(), ^{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Error. Site url is crash" message:[parseError localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    
    [alert show];
     });
        NSLog(@"error %@", parseError);
 
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if ([[alertView buttonTitleAtIndex:buttonIndex]isEqualToString:@"Repeat"]) {
        
        [self main];
       
    }
}
 
 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    
    
    if ([elementName isEqualToString:@"item"]) {
        [item setObject:title forKey:@"title"];
        [item setObject:link forKey:@"link"];
        [item setObject:pubDate forKey:@"pubDate"];
        [item setObject:author forKey:@"author"];
        [item setObject:description forKey:@"description"];
        
        
        [_feeds addObject:[item copy]];
    }
}
 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    if ([element isEqualToString:@"title"]) {
        [title appendString:string];
    } else if ([element isEqualToString:@"link"]) {
        [link appendString:string];
    }
    
    else if ([element isEqualToString:@"pubDate"]) {
        [pubDate appendString:string];
    }
    else if ([element isEqualToString:@"author"]) {
        [author appendString:string];
    }
    else if ([element isEqualToString:@"description"]) {
        [description appendString:string];
    }
    
    
}
 
-(void)parserDidEndDocument:(NSXMLParser *)parser {
 
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
 
    
    
}
 
 
 
 
@end
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru