• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#043 – Creiamo il nostro lettore di feed RSS per iPhone

By Andrea Busi | on 18 Maggio 2010 | 76 Comments
Senza categoria

Oggi parleremo ancora di XML, questa volta, però, con un esempio pratico. Andremo a creare infatti, con questo nuovo tutorial, un lettore di feed RSS per il nostro iPhone. Impareremo quindi a sfruttare il parser XML disponibile con l’SDK di Apple, “NSXMLParser”, per interfacciare la nostra applicazione, ad esempio, con i feed RSS del nostro sito. Ricaveremo un elenco delle ultime notizie pubblicate e, al tocco da parte dell’utente su una voce nell’elenco, faremo in modo di aprire una nuova vista con la news pronta da leggere. Interessante vero? Ma ora basta chiacchere e partiamo subito con il nostro tutorial.

1. Creiamo un nuovo progetto

Aprimo Xcode, selezioniamo “File -> New Project”. Nel menù che ci appare selezioniamo “Navigation-Based Application”, clicchiamo su “Choose…”, immettiamo come nome “SimpleRSSreader” e facciamo clic su “Save”. Abbiamo così creato il nostro nuovo progetto.

Solitamente tra le prime cose che facciamo è realizzare la struttura grafica dell’applicazione. Oggi, però, non sarà necessario, in quanto Xcode ci fornisce già un template predisposto, contenente una tabella (UITableView) che a suo volta conterrà gli elementi che andremo a leggere. Ci concentreremo, quindi, sugli aspetti più importanti.

2. Definiamo gli elementi necessari

Il primo file che andremo a modificare è “RootViewController.h”. Apriamolo e, al suo interno, scriviamo il seguente codice:

@interface RootViewController : UITableViewController   {
	// parser XML
	NSXMLParser *rssParser;
	// elenco degli elementi letti dal feed
	NSMutableArray *elencoFeed;

	//variabile temporanea pe ogni elemento
	NSMutableDictionary *item;

	// valori dei campi letti dal feed
	NSString *currentElement;
	NSMutableString *currentTitle, *currentDate, *currentSummary, *currentLink;
}

- (void)parseXMLFileAtURL:(NSString *)URL;

@end

Come già saprete, questo è il file di implementazione, in cui definiamo tutti gli elementi, quelli che vengono solitamente chiamati “variabili globali”. Questi elementi li utilizzeremo nei vari metodi che andremo a definire fra poco.

Alla riga 3 abbiamo definito il nostro parser XML, che si occuperà di leggere il feed RSS e di convertirne le notizie. Alla riga 5 è definito un NSMutableArray, ovvero una collezione di oggetti, in cui inseriremo i vari feed letti (con le varie informazioni, ovvero titolo, data, testo, etc). Le dichiarazioni alle righe 7, 10 e 11 servono proprio per i metodi del parser, quindi non preoccupatevi troppo se non le capite pienamente.

Apriamo, ora, il file “RootViewController.m”. Possiamo subito notare che sono già presenti diversi metodi. Tutti si riferiscono alla definizione e al popolamento della tabella. Tali metodi sono obbligatori e necessari per il corretto funzionamento della tabella stessa.

Iniziamo a modificare i metodi già presenti a seconda delle nostre necessità.

Il primo metodo da modificare è il seguente:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [elencoFeed count];
}

Questo metodo imposta il numero di righe della nostra tabella. Tale numero deve essere pari al numero di elementi che scarichiamo dal feed RSS. Ad esempio, se abbiamo ricavato 10 notizie dal nostro feed, dovranno essere 10 le righe della tabella, ovvio no?

Le  parentesi quadre [] che trovate intorno all’elemento “elencoFeed” servono per richiamare un metodo o una proprietà: in questo caso abbiamo richiamato la proprietà “count”, che ci ritorna il numero di elementi presenti nella nostra lista.

Dobbiamo ora modificare il metodo che si occupa di inserire il testo all’interno delle varie celle. Ecco il metodo che si occupa di ciò:

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

   // Configure the cell.
   cell.textLabel.text = [[elencoFeed objectAtIndex:indexPath.row] objectForKey:@"title"];

   return cell;
}

Troveremo tale metodo già definito, dovremo solo aggiungere l’istruzione alla riga 12. Tale istruzione va a ricavare l’elemento desiderato dalla lista (che coincide con il numero di riga, ricavato da “indexPath.row”), estrae quindi il campo “title” e lo setta come testo della cella.

Se scorriamo verso il basso il file, possiamo notare alcuni metodi commentati (riconoscibili perchè Xcode li colora in verde). Essi sono ancora relativi alla gestione della tabella, ma in questo tutorial non ci serviranno (tranne uno, che utilizzeremo dopo).

Se provassimo ad eseguire il programma adesso, vedremmo che non farebbe ancora niente. Non abbiamo, infatti, ancora aggiunto la possibilità di scaricare il feed e di utilizzarlo. Quindi, ora, faremo proprio questo.

3. Definiamo le azioni del parser

Ci siamo occupati, fino ad ora, solo della definizione della tabella. Non abbiamo ancora visto nessun aspetto relativo al parser XML.

Iniziamo, quindi, dal metodo “viewDidLoad” (lo possiamo trovare commentato tra le prime righe della classe):

- (void)viewDidLoad {
        [super viewDidLoad];

	self.title = @"devAPP RSS";

	NSString *path = @"http://feeds.feedburner.com/devAPP";
	[self parseXMLFileAtURL:path];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

Come vedete abbiamo aggiunto alcune istruzioni. Alla riga 4 abbiamo settato un titolo alla nostra applicazione, che comparirà nella navigation bar sopra la tabella. Alla riga 6, invece, viene definita, una stringa “path”, in cui inseriamo l’indirizzo del feed RSS che vogliamo leggere. Alla riga successiva, infine, avviamo il parsing del feed (tramite il metodo “parseXMLFileAtURL”, di cui abbiamo definito l’intestazione nel file “RootViewController.h”), passando proprio l’indirizzo “path” come parametro.

Tale metodo, però, non è ancora stato implementato nella nostra funzione. Ecco come dovremo definirlo:

- (void)parseXMLFileAtURL:(NSString *)URL {
	// inizializziamo la lista degli elementi
	elencoFeed = [[NSMutableArray alloc] init];

	// dobbiamo convertire la stringa "URL" in un elemento "NSURL"
	NSURL *xmlURL = [NSURL URLWithString:URL];

	// inizializziamo il nostro parser XML
	rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];

	[rssParser setDelegate:self];

	// settiamo alcune proprietà
	[rssParser setShouldProcessNamespaces:NO];
	[rssParser setShouldReportNamespacePrefixes:NO];
	[rssParser setShouldResolveExternalEntities:NO];

	// avviamo il parsing del feed RSS
	[rssParser parse];
}

Come vedete il metodo non è molto complicato. I commenti presenti ci possono chiarire le varie istruzioni. Si parte dall’inizializzazione dell’array “elencoFeed”, per poi passare all’inizializzazione del parser XML e al suo avvio.

Per funzionare correttamente, il parser ha bisogno di altri due metodi. Eccoveli (anche questi sono da inserire in “RootViewController.m”):

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{			

	currentElement = [elementName copy];
	if ([elementName isEqualToString:@"item"]) {
		// inizializza tutti gli elementi
		item = [[NSMutableDictionary alloc] init];
		currentTitle = [[NSMutableString alloc] init];
		currentDate = [[NSMutableString alloc] init];
		currentSummary = [[NSMutableString alloc] init];
		currentLink = [[NSMutableString alloc] init];
	}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{     

	if ([elementName isEqualToString:@"item"]) {
		/* salva tutte le proprietà del feed letto nell'elemento "item", per
		   poi inserirlo nell'array "elencoFeed" */
		[item setObject:currentTitle forKey:@"title"];
		[item setObject:currentLink forKey:@"link"];
		[item setObject:currentSummary forKey:@"summary"];
		[item setObject:currentDate forKey:@"date"];

		[elencoFeed addObject:[item copy]];
	}
}

Questi due metodi vengono richiamati, rispettivamente, quando inizia e quando finisce un elemento XML. Nel primo caso dovremo re-inizializzare tutti gli elementi, in modo da poter leggere un nuovo elemento senza errori. Al contrario, quando un elemento XML termina dovremo salvare tutti questi valori letti in un unico elemento (“item”) e inserirlo nella lista dei feed letti (“elencoFeed”).

Per completare la definizione del parser ci mancano altri due metodi:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{;
	// salva i caratteri per l'elemento corrente
	if ([currentElement isEqualToString:@"title"]){
		[currentTitle appendString:string];
	} else if ([currentElement isEqualToString:@"link"]) {
		[currentLink appendString:string];
	} else if ([currentElement isEqualToString:@"description"]) {
		[currentSummary appendString:string];
	} else if ([currentElement isEqualToString:@"pubDate"]) {
		[currentDate appendString:string];
	}
}

- (void) parserDidEndDocument:(NSXMLParser *)parser {
	[self.tableView reloadData];
}

Il primo metodo viene richiamato ogni volta che viene letto un carattere all’interno del feed. A seconda dell’elemento che siamo considerando, andremo a inserire il carattere letto in coda a quelli già letti dello stesso carattere, in modo da ricostruire l’informazione completa. Ad esempio, stiamo considerando l’elemento “title”. Vengono letti, nell’ordine, i seguenti caratteri “Dev”, “Tutorial “, “#2”. Unendo i vari caratteri letti ricostruiremo il titolo esatto del nostro feed, ovvero “DevTutorial #2”.

Il secondo metodo, invece, viene richiamato solo quando il parser completa la lettura del feed RSS, e noi non faremo altro che dire alla tabella di “ricarcarsi” (verranno, quindi, richiamati i metodi per settare il numero di righe e per inserire il testo nelle varie celle).

4. Concludiamo l’applicazione

Abbiamo ormai concluso la nostra applicazione!!

Come sempre dobbiamo ricordarci di completare il metodo “dealloc”, che è davvero molto importante, soprattutto nelle applicazioni di un certo grado di complessità. Ecco come dovremo definire il metodo:

- (void)dealloc {
	[currentElement release];
	[rssParser release];
	[elencoFeed release];
	[item release];
	[currentTitle release];
	[currentDate release];
	[currentSummary release];
	[currentLink release];

    [super dealloc];
}

Ora siamo pronti per compilare ed eseguire la nostra applicazione! Clicchiamo su “Build and Run!” e testiamo il nostro personalissimo lettore di feed RSS!!

5. Un piccolo miglioramento

La nostra applicazione funziona ma.. provate a cliccare su un elemento. Non succederà niente. Non sarebbe invece più carino se si aprisse una nuova vista in cui venisse caricato l’articolo completo. Ci basterà, quindi, creare una nuova vista, in cui inseriremo una UIWebView, che sarà il nostro browser per l’articolo.

Dal menù “File” scegliamo “New File…”, andiamo nella sezione “Cocoa Touch Class” e scegliamo “UIViewController subclass” come tipo di classe, spuntando inoltre l’opzione “With XIB for user interface”:

Inseriamo “ViewArticolo” come nome e clicchiamo su “Finish”. Abbiamo così creato la classe e la relativa vista.

Apriamo il file “ViewArticolo.h” e inseriamo le seguenti dichiarazioni:

#import 

@interface ViewArticolo : UIViewController {
	IBOutlet UIWebView *webView;

	NSString *indirizzo;
}

@property (nonatomic, retain) NSString *indirizzo;

@end

Come potete facilmente notare, abbiamo dichiarato una UIWebView (che andremo fra poco a definire in Interface Builder) e una variabile indirizzo, che conterrà l’URL dell’articolo da caricare.

Apriamo ora il file “ViewArticolo.m” e inseriamo il seguente codice (che vi abbiamo già spiegato in questo tutorial):

#import "ViewArticolo.h"

@implementation ViewArticolo

@synthesize indirizzo;

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
	//crea un oggetto URL
	NSURL *url = [NSURL URLWithString:indirizzo];
	NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
	// visualizza la pagina nella UIWebView
	[webView loadRequest:requestObj];
}

Salviamo entrambi i file e apriamo “ViewArticolo.xib”, in cui andremo ad inserire la UIWebView. Dalla Libreria prendiamo un componente di tipo UIWebView e inseriamolo nella vista, così:

Apriamo, infine, il Pannello dei Documenti, selezioniamo il “File’s Owner”  e colleghiamo l’elemento “webView” con la UIWebView che abbiamo appena inserito nella vista:

Salviamo tutto e chiudiamo Interface Builder.

Abbiamo quasi concluso! Torniamo al file “RootViewController.m” e cerchiamo il metodo “tableView: didSelectRowAtIndexPath:” (è uno di quelli commentati che vi avevo accennato prima). Questo metodo viene richiamato ogni volta che si “clicca” su una cella. Sarà qui che andremo ad inserire il codice necessario che ci permetterà di aprire la news selezionata:

// Override to support row selection in the table view.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

	// ricaviamo il link dell'elemento selezionato
	NSString *link = [[elencoFeed objectAtIndex:indexPath.row] objectForKey: @"link"];

	// ripiliamo il link da spazi, return e tabs
	link = [link stringByReplacingOccurrencesOfString:@" " withString:@""];
	link = [link stringByReplacingOccurrencesOfString:@"\n" withString:@""];
	link = [link stringByReplacingOccurrencesOfString:@"	" withString:@""];

	// apriamo la nuova vista
	ViewArticolo *controller = [[ViewArticolo alloc] initWithNibName:@"ViewArticolo" bundle:nil];
	controller.indirizzo = link;
	[self.navigationController pushViewController:controller animated:YES];
}

Il procedimento è molto simile a quello visto per la definizione delle celle della tabella. Alla riga 4, infatti, andiamo a ricavare la proprietà “link” dell’elemento selezionato, associandola ad una stringa chiamata appunto “link”. Con le istruzioni seguenti, invece, ripuliamo l’indirizzo da eventuali caratteri indesiderati, come spazi, return o tab. Con le ultime istruzioni inizializziamo la classe relativa alla vista che abbiamo appena definito, passandogli come parametro l’indirizzo dell’articolo che l’utente ha selezionato.

Manca solo una piccolissima cosa da fare: sempre nel file “RootViewController.m” inseriamo l’importazione della “ViewArticolo” (riga 2):

#import "RootViewController.h"
#import "ViewArticolo.h"

@implementation RootViewController

Salviamo il tutto, clicchiamo su “Build and Run” e godiamoci la nostra bellissima applicazione!!

Se avete problemi con il tutorial, questo è il nostro file di progetto.

Nota: Purtroppo “NSXMLParser” è l’unico parser XML semplice e disponibile su iPhone. Questo ha molti svantaggi, non è perfetto e presenta diversi problemi relativi alla gestione della memoria. Per questo esempio, tuttavia, è più che sufficiente, però se vi servisse per un’applicazione più complessa prendete in seria considerazione l’idea di realizzarvi un parser tutto vostro.

La guida è stata tradotta e ampliata da Andrea Busi. Trovare la versione originale a questo indirizzo: iPhone SDK Tutorial: Build a Simple RSS reader for the iPhone. I meriti, quindi, sono dei legitimi autori per le rispettive versioni.

Share this story:
  • tweet

Tags: andrea busifeed RSS iphoneNSXMLParserparsing XMLprogrammazione iphoneTutorial PraticiXML iPhone

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • “Tutorial pratici per iOS SDK” si aggiorna alla versione 2.1

    10 Maggio 2012 - 1 Comment
  • Tutorial pratici per iOS SDK: disponibile la versione 2.0 aggiornata a iOS 5 e XCode 4.2

    16 Novembre 2011 - 6 Comments
  • T#096 – Facciamoci lasciare una recensione in App Store dalla nostra applicazione con Appirater

    15 Giugno 2011 - 40 Comments

Author Description

23 anni, è studente di Ingegneria Informatica presso l’Università di Bergamo (laurea Magistrale). Appassionato d’informatica sin da bambino, conosce molto bene il C++, Java e l'ObjectiveC, con cui ormai programma con successo da qualche anno. Ha già scritto un ebook “Tutorial pratici per iPhone SDK”, che ha avuto un ottimo successo, e gestisce da quasi due anni BubiDevs, un piccolo blog che ha dato l’ispirazione anche a devAPP.

76 Responses to “T#043 – Creiamo il nostro lettore di feed RSS per iPhone”

  1. 20 Aprile 2011

    Matteo

    Andrea, potresti darmi qualche consiglio su come recuperare dei feed con dei tag speciali? Ti spiego, io devo prendere dei feed da un sito, solo che poi gli devo smistare in diverse UIView, il problema è che non so come poter interagire con xcode per prelevare solo determinati feed! Grazie mille!! Matteo

  2. 10 Maggio 2011

    Mit

    Ciao,
    se volessi fare un lettore pdf invece che dei reed, il procedimento base sarebbe lo stesso?

  3. 25 Maggio 2011

    Raiden

    Ma se invece di aprire il sito web, si volesse leggere il testo dell’articolo direttamente dalla applicazione come si deve fare?

  4. 27 Maggio 2011

    Andrea Busi


    Raiden:

    Ma se invece di aprire il sito web, si volesse leggere il testo dell’articolo direttamente dalla applicazione come si deve fare?

    Quando esegui il parsing del feed RSS ti salvi anche il testo della notizia (ora non mi ricordo con precisione il nome del tag).
    Fatto ciò andrai poi ad aprire una nuova vista in cui visualizzi questo contenuto, niente di difficile 😉

  5. 6 Giugno 2011

    tommaso

    ho un’tabbar con tre viste e nella prima voglio usare questa guida…come faccio?

  6. 17 Giugno 2011

    Andrea Busi


    tommaso:

    ho un’tabbar con tre viste e nella prima voglio usare questa guida…come faccio?

    Semplicemente utilizzi questo tutorial (ovviamente il codice del parser) solo nella classe che gestisce il ViewController della tua prima vista 😉

  7. 28 Giugno 2011

    Tiziano

    Ciao, ho visto il tutorial e mi chiedo… Se ad applicazione completamante chiusa volessi che ogni volta che viene aggiunto un Feed mi arrivasse una local notification come faccio? Vi prego rispondete!

  8. 1 Luglio 2011

    Installoso Appsinco

    Vi ammiro!

  9. 3 Agosto 2011

    simone

    ciao Andrea ti vorrei chiedere una cosa, sulla quale sto sbattendo la testa da un po’ di tempo : ho seguito questo tutorial e quello in cui si spiega come inserire la barra per la ricerca all’interno di una tabella, sembra funzionare tutto (non da errori il compilatore) ma quando vado a cercare alla prima lettera che inserisco l’app va in crash..sai quale potrebbe essere il problema? ho già provato a implementare la ricerca in una tabella caricata “manualmente” e lì non ho avuto problemi, ma con la tabella in cui le celle contengono dati di un file xml non funziona. Ti ringrazio in anticipo e aspetto una risposta da te o da chiunque se ne intenda 🙂

  10. 18 Agosto 2011

    Antonio

    Ciao Andrea, complimenti.
    Ho provato a rifare tutto ma cambiando i tag per far leggere un mio file.xml e sono arrivato fino al punto5 escluso, cioè prima del miglioramento. Il problema è che avviando il simulatore mi esce una pagina bianca e si legge solo il titolo che ho pre-impostato io. Ho visto che per far caricare il file xml in linea hai scritto il percorso così:

    NSString *path = @”http://feeds.feedburner.com/devAPP”;

    ma io volendo indicare un file sul mio server come faccio oltre che cambiare il percorso? devo mettere anche il nome del file.xml?

    grazie mille in anticipo 😉

    A.

  11. 24 Novembre 2011

    Nico

    Da la bellezza di 34 Errori… -.-‘

  12. 28 Novembre 2011

    Andrea Busi


    Nico:

    Da la bellezza di 34 Errori… -.-’

    Che versione di Xcode stai utilizzando? Potresti avere qualche errore se hai impostato il progetto in ARC (con Xcode 4.2) e hai poi copiato il codice pari pari. Quali errori ottinei?

  13. 22 Dicembre 2011

    mauro

    ciao, una piccola domanda, ho fatto tutto e sembra funzionare perfettamente, ma è normale che come apro i singoli feed mi apra la pagina web? non è possibile con questo sisitema far aprire il solo articolo fomrattandolo nella app?

    grazie della risposta ma soprattutto grazie del lavoro (aiuto) che svolgete!!!

  14. 23 Dicembre 2011

    Andrea Busi


    mauro:

    ciao, una piccola domanda, ho fatto tutto e sembra funzionare perfettamente, ma è normale che come apro i singoli feed mi apra la pagina web? non è possibile con questo sisitema far aprire il solo articolo fomrattandolo nella app?
    grazie della risposta ma soprattutto grazie del lavoro (aiuto) che svolgete!!!

    Ciao,
    si, il comportamento che hai descritto è normale, il tutorial è stato realizzato in modo che l’articolo venga letto nella pagina web del sito di riferimento.
    Se vuoi modificare questo aspetto dovrai, in fase di parsing, assicurarti di salvare anche l’eventuale testo dell’articolo (che spesso è inserito in un tag di nome “description”). Fatto ciò ti basterà poi passarlo ad una nuova vista che lo visualizzerà in base alle tue esigenze 😉

  15. 26 Gennaio 2012

    Luca

    Ciao Andrea, sto seguendo il tutorial ma ho un problema con la formattazione della data. Vorrei usare come informazione di dettaglio della cella, la data (la chiave “date” del dizionario item) ma non riesco a formattarla; questo è quello che mi restituisce il parser:

    Tue, 24 Jan 2012 14:00:54 +0000

    Tra l’altro la stringa ha in coda “\n\t\t”.
    Come faccio a convertire questa stringa in data?

    Grazie mille

  16. 29 Gennaio 2012

    floppy


    Andrea Busi:


    mauro:

    ciao, una piccola domanda, ho fatto tutto e sembra funzionare perfettamente, ma è normale che come apro i singoli feed mi apra la pagina web? non è possibile con questo sisitema far aprire il solo articolo fomrattandolo nella app?
    grazie della risposta ma soprattutto grazie del lavoro (aiuto) che svolgete!!!

    Ciao,
    si, il comportamento che hai descritto è normale, il tutorial è stato realizzato in modo che l’articolo venga letto nella pagina web del sito di riferimento.
    Se vuoi modificare questo aspetto dovrai, in fase di parsing, assicurarti di salvare anche l’eventuale testo dell’articolo (che spesso è inserito in un tag di nome “description”). Fatto ciò ti basterà poi passarlo ad una nuova vista che lo visualizzerà in base alle tue esigenze

    Ciao! non è che puoi spiegare come fare questa cosa? io utilizzo feedburner 🙂
    Grazie!

  17. 29 Gennaio 2012

    Andrea Busi


    Luca:

    Ciao Andrea, sto seguendo il tutorial ma ho un problema con la formattazione della data. Vorrei usare come informazione di dettaglio della cella, la data (la chiave “date” del dizionario item) ma non riesco a formattarla; questo è quello che mi restituisce il parser:
    Tue, 24 Jan 2012 14:00:54 +0000
    Tra l’altro la stringa ha in coda “\n\t\t”.
    Come faccio a convertire questa stringa in data?
    Grazie mille

    Ciao,
    per convertire una stringa in data devi passare attraverso un NSDateFormatter. In pratica prima devi definire il formato della tua data, poi tramite questo oggetto puoi convertirla in un oggetto di tipo NSDate. Eccoti un esempio:

     NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
     [dateFormat setDateFormat:@"dd/MM/yyyy HH.mm"];
     NSDate *data = [dateFormat dateFromString:stringa];
    

    Quello che dovrai definire correttamente è il formato della data (specificato nella seconda istruzione). Consulta la documentazione (o cerca su Internet) per trovare la combinazione dei parametri che fanno al caso tuo 😉

  18. 3 Febbraio 2012

    PBmobile77

    Ciao a tutti, innanzi tutto voglio fare i miei complimenti a Bubi perché è un grande!!
    Ora ho una domanda, premetto che sono un principiante….:
    In Xcode 4.2 non trovo il template “Navigation-Based Application”… con cosa bisogna sostituirlo? Grazie 1000. Pietro

  19. 4 Febbraio 2012

    Andrea Busi


    PBmobile77:

    Ciao a tutti, innanzi tutto voglio fare i miei complimenti a Bubi perché è un grande!!
    Ora ho una domanda, premetto che sono un principiante….:
    In Xcode 4.2 non trovo il template “Navigation-Based Application”… con cosa bisogna sostituirlo? Grazie 1000. Pietro

    Ciao, grazie dei complimenti 😉
    Tornando alle cose serie, in Xcode 4.2 puoi utilizzare come template “Master-Detail Application”, che fornisce le stesse strutture della vecchia “Navigation-Based Application” 😉

  20. 16 Febbraio 2012

    Luca

    Ho un paio di app che fanno la lettura da siti di news delle rss e vedo che fanno il caricamento di 25 feed alla volta, poi caricano altri 25 alla pressione della 26esima cella, come implementeresti questa cosa??

  21. 12 Marzo 2012

    RiccardoQ

    Ciao! Complimenti per il tutorial fatto molto bene. Una domanda: ho dei feed che contengono delle immagini, solo che i link sono degli attributi di tag , come posso fare per ottenere oltre che title description ecc anche il link dell’immagine?

  22. 20 Marzo 2012

    Sergio

    Complimenti! bellissimo tutorial!!!

    Mi chiedevo: se volessi estrarre la fonte dell’informazione?
    Ad esempio “Wall Street Journal, 2 hours ago”

    C’è un modo semplice di farlo?
    Grazie in anticipo

  23. 21 Dicembre 2012

    Walter

    Aiutooooooo! Mi da un sacco di errori! Perché?! Mi servirebbe proprio un’applicazione come questa!!

  24. 8 Maggio 2013

    Andrea


    floppy:


    Andrea Busi:


    mauro:

    ciao, una piccola domanda, ho fatto tutto e sembra funzionare perfettamente, ma è normale che come apro i singoli feed mi apra la pagina web? non è possibile con questo sisitema far aprire il solo articolo fomrattandolo nella app?
    grazie della risposta ma soprattutto grazie del lavoro (aiuto) che svolgete!!!
    Ciao,
    si, il comportamento che hai descritto è normale, il tutorial è stato realizzato in modo che l’articolo venga letto nella pagina web del sito di riferimento.
    Se vuoi modificare questo aspetto dovrai, in fase di parsing, assicurarti di salvare anche l’eventuale testo dell’articolo (che spesso è inserito in un tag di nome “description”). Fatto ciò ti basterà poi passarlo ad una nuova vista che lo visualizzerà in base alle tue esigenze

    Ciao! non è che puoi spiegare come fare questa cosa? io utilizzo feedburner
    Grazie!

    Interesserebbe anche a me. Riesci a darci una mano per arrivare a visualizzare gli articoli in una pagine all’interno dell’APP invece che dal sito?

    Ti sarei veramente grato, e sarebbe molto utile anche ad altri.

    Andrea

  25. 8 Maggio 2013

    Andrea

    dimenticavo… complimenti per i tutorial, sono ben fatti.

    A

  26. 9 Gennaio 2014

    ferdinando

    ciao andrea.ho provato a fare un semplice lettore di feed utilizzando la tua guida. ho però un problema. quando inserisco l’indirizzo del feed del mio sito “un blog creato su piattaforma blogger di Google, quindi generato con feedbruner”,quando inserisco l’indirizzo lo stesso non viene visto nel simulatore del telefono che resta con sfondo bianco senza caricare nulla. lo stesso problema lo riscontro con altri siti di feed ma non l’ho riscontrato con l’indirizzo di una pagina facebook che gestisco. come mai??

    grazie

« Older Comments

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO