Данные не будут загружаться после разбора XML

Я новичок в iOS и пытаюсь реализовать синтаксический анализ XML. Я использую собственный класс (XMLParser) для разбора XML, предоставленный Габриэлем Теодоропулосом. Я пытаюсь загрузить и сохранить данные при запуске приложения.

Данные также анализируются и сохраняются, но представление, что я пытаюсь загрузить сохраненный файл, загружается раньше, поэтому данные не отображаются. Но когда я снова выдвигаю представление, данные видны.

Из того, что я заметил, завершение метода класса XMLParser в AppDelegate происходит после загрузки представления. Разбор и загрузка представления происходит правильно, когда я нажимаю кнопку обновления, чтобы выполнить то же действие.

Вы можете помочь?

Вот как далеко я зашел:

AppDelegate.m

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self initialNewsFetch];
return YES;
}
-(void) initialNewsFetch
{
//1. Main view|Home:- Most Read
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
RootViewController * mostRead = [storyboard instantiateViewControllerWithIdentifier:@"RootViewController"];
[mostRead refreshData];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ArtsNewsAvailable" object:nil];

}
@end

ViewController.m

 -(void)refreshData{

XMLParser *xmlParser = [[XMLParser alloc] initWithXMLURLString:MostReadNewsFeed];
[xmlParser startParsingWithCompletionHandler:^(BOOL success, NSArray *dataArray, NSError *error) {

    if (success) {
        [self performNewFetchedDataActionsWithDataArray:dataArray];
    }
    else{
        NSLog(@"%@", [error localizedDescription]);
    }
}];

}

-(void)performNewFetchedDataActionsWithDataArray:(NSArray *)dataArray{
// 1. Initialize the arrNewsData array with the parsed data array.
if (self.arrNewsData != nil) {
    self.arrNewsData = nil;
}
self.arrNewsData = [[NSArray alloc] initWithArray:dataArray];


// 2. Write the file and reload the view.
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * docDirectory = [paths objectAtIndex:0];
NSString * newsFilePath = [NSString stringWithFormat:@"%@",[docDirectory stringByAppendingPathComponent:@"mostRead"]]; // NewsFile

if (![self.arrNewsData writeToFile:newsFilePath atomically:YES]) {
    _newsAvailable = NO;
    NSLog(@"Couldn't save data.");
}
else
{
    _newsAvailable = YES;
    [self viewDidLoad]; //even tried calling this//
}
}

0 ответов

Другие вопросы по тегам