{"id":4062,"date":"2010-07-26T14:47:14","date_gmt":"2010-07-26T12:47:14","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=4062"},"modified":"2010-09-13T11:05:23","modified_gmt":"2010-09-13T09:05:23","slug":"panoramica-sul-file-system-locale-delle-nostre-applicazioni-iphone-ios","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/panoramica-sul-file-system-locale-delle-nostre-applicazioni-iphone-ios\/","title":{"rendered":"L#013 &#8211; Panoramica sul &#8220;File System Locale&#8221; delle nostre applicazioni iPhone (iOS)"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/gestione-file-applicazioni-iphone-devapp.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/gestione-file-applicazioni-iphone-devapp.png\" alt=\"gestione file applicazioni iphone devapp\" title=\"gestione-file-applicazioni-iphone-devapp\" width=\"135\" height=\"114\" class=\"alignleft size-full wp-image-4003\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/gestione-file-applicazioni-iphone-devapp.png 269w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/gestione-file-applicazioni-iphone-devapp-150x127.png 150w\" sizes=\"auto, (max-width: 135px) 100vw, 135px\" \/><\/a> Qualche giorno fa vi abbiamo proposto un <a href=\"http:\/\/www.devapp.it\/wordpress\/gestione-dei-file-nelle-nostre-applicazione-iphone.html\" target=\"_blank\">tutorial sulla gestione dei File<\/a> all&#8217;interno delle nostre applicazioni iPhone, vediamo oggi di approfondire l&#8217;argomento offrendovi una panoramica del File System Locale. Niente di complicato, vedremo semplicemente come sono organizzate le cartelle all&#8217;interno dei nostri programmi e cercheremo di capire come dovremo organizzare i nostri file all&#8217;interno delle stesse.<\/p>\n<p>Come ben saprete molti programmi hanno la necessit\u00e0 di salvare file, che siano questi foto, video, piuttosto che documenti di testo o ancora impostazioni varie dell&#8217;applicazione. Insomma, l&#8217;uso dei file in un programma \u00e8 praticamente d&#8217;obbligo per la quasi totalit\u00e0 delle applicazioni esistenti. Ma dove dobbiamo salvare i nostri file? Come sono organizzate le cartelle all&#8217;interno dei nostri programmi iPhone? Di cosa dovremo tenere conto durante la scelta della corretta posizione?<!--more--><\/p>\n<p>La tabella seguente e le informazioni a seguire, prelevate direttamente dalla <a href=\"https:\/\/developer.apple.com\/iphone\/library\/documentation\/iPhone\/Conceptual\/iPhoneOSProgrammingGuide\/RuntimeEnvironment\/RuntimeEnvironment.html\" target=\"_blank\">documentazione ufficiale Apple<\/a>, ci chiariranno senz&#8217;altro le idee:<\/p>\n<table>\n<tr>\n<td><strong>Directory<\/strong><\/td>\n<td><strong>Descrizione<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Application_Home\/AppName.app<\/td>\n<td>Questa \u00e8 la directory contenente l&#8217;applicazione stessa (bundle). Dovremo fare attenzione a non effettuare cambiamenti al contenuto di questa directory a runtime. Cos\u00ec facendo farete in modo che l&#8217;applicazione possa avviarsi anche altre volte. Da iOS 2.1 in poi, il contenuto di questa directory non viene &#8220;backuppato&#8221; da iTunes. Tuttavia, iTunes esegue una sincronizzazione iniziale di tutte le applicazioni acquistate da App Store. Quindi alla prima sincronizzazione verr\u00e0 comunque fatto un backup anche di questa cartella.<\/td>\n<\/tr>\n<tr>\n<td>Application_Home\/Documents\/<\/td>\n<td>Questa \u00e8 cartella che dovremo utilizzare per archiviare i documenti degli utenti e i file di dati (configurazioni varie) dell&#8217;applicazione. I contenuti di questa directory potranno inoltre essere resi disponibili agli utenti attraverso la condivisione di file con un computer desktop.<\/td>\n<\/tr>\n<tr>\n<td>Application_Home\/Library\/Preferences<\/td>\n<td>Questa directory contiene i file delle preferenze della specifica applicazione. Non dovremmo mai creare file di preferenze direttamente, dovremmo invece sfruttare la classe &#8220;<em>NSUserDefaults<\/em>&#8221; o le &#8220;<em>CFPreferences API<\/em>&#8221; per leggere e settare le preferenze di un&#8217;applicazione. Il contenuto di questa directory viene &#8220;backuppato&#8221; da iTunes.<\/td>\n<\/tr>\n<tr>\n<td>Application_Home\/Library\/Caches<\/td>\n<td>Usate questa directory per salvare qualsiasi file di supporto per la vostra applicazione che volete ritrovare ai successivi avvii dell&#8217;applicazione. Sar\u00e0 poi l&#8217;applicazione stessa responsabile dell&#8217;aggiunta e la rimozione di questi file. iTunes rimuove questi file durante un ripristino completo (full restore) del dispositivo, sar\u00e0 vostra cura essere abili nel ricrearli quando necessario. Da iOS 2.2 in poi, il contenuto di questa directory non viene &#8220;backuppato&#8221; da iTunes. <\/td>\n<\/tr>\n<tr>\n<td>Application_Home\/tmp\/<\/td>\n<td>Usate questa directory per salvare file temporanei di cui non necessitate la presenza durante successivi avvii dell&#8217;applicazione. Dovreste far in modo, inoltre, di rimuovere i file quando ritenete che questi non siano pi\u00f9 necessari. Da iOS 2.1 in poi, il contenuto di questa directory non viene backuppato da iTunes.<\/td>\n<\/tr>\n<\/table>\n<p>Come vedete ogni cartella \u00e8 stata creata per uno scopo specifico. Programmare le nostre applicazioni iPhone, tenendo conto di questi fattori, eviter\u00e0 eventuali imprevisti o problemi legati al programma stesso.<\/p>\n<h4>Case Sensitivity<\/h4>\n<p>Il file system dei dispositivi basati su iOS \u00e8 <strong>CASE SENSITIVE<\/strong>. Quando lavorerete con i nomi dei file (e tutto il percorso in genere), dovrete essere certi di utilizzare correttamente maiuscole e minuscole, esattamente come li avevate salvati, o non sarete in grado di aprire o accedere ai file.<\/p>\n<h4>Condividere File con computer desktop<\/h4>\n<p>Se volete offrire agli utenti la possibilit\u00e0 di accerere ai file del vostro programma tramite computer desktop, potrete farlo tramite il file sharing. Tramite il <em>file sharing<\/em> abiliterete la condivisione dei file esclusivamente dall&#8217;applicazione al computer desktop dell&#8217;utente. Non permette quindi la condivisione con altre applicazioni sullo stesso device.  Per condividere dati e file tra applicazioni diverse dovrete ovviare usando la &#8220;<em>pasteboard<\/em>&#8220;, o sfruttare un controller apposito.<\/p>\n<h4>Backup e Restore<\/h4>\n<p>iTunes si preoccupa automaticamente di effettuare backup e ripristino dei dati degli utenti in particolari condizioni. Dovrete per\u00f2 sapere dove mettere i vile per essere certi che questi vengano correttamente &#8220;backuppati&#8221; e all&#8217;occorrenza ripristinati, in base alle vostre necessit\u00e0.<\/p>\n<h4>Cosa viene backuppato?<\/h4>\n<p>Innanzitutto non dovrete preparare le vostre applicazioni in alcun modo per quanto riguarda le operazioni di backup e ripristino. Da iOS 2.2 in poi, infatti, quando un dispositivo viene connesso a un computer e sincronizzato, iTunes avvia un backup incrementale di tutti i file, eccetto quelli presenti nelle seguenti directory:<\/p>\n<ul>\n<li>Application_Home\/AppName.app<\/li>\n<li>Application_Home\/Library\/Caches<\/li>\n<li>Application_Home\/tmp<\/li>\n<\/ul>\n<p>Anche se iTunes fa il backup del <em>bundle<\/em> dell&#8217;applicazione stessa, non lo fa durante ogni operazione di sincronizzazione. Le applicazioni acquistate dall&#8217;App Store direttamente dal device, ad esempio, sono backuppate alla successiva sincronizzazione con iTunes. Le applicazioni, per\u00f2,  non verranno backuppate pi\u00f9 durante le successive operazioni di sincronizzazione, a meno che l&#8217;applicazione stessa sia cambiata (ad esempio a causa di un aggiornamento). <\/p>\n<p>Per far in modo che il processo di sincronizzazione non duri per un periodo troppo lungo, dovrete essere selettivi sulla posizione scelta durante il salvataggio dei file nelle directory della vostra applicazione. La directory <em>Application_Home\/Documents<\/em> dovrebbe essere usata per salvare i documenti degli utenti e i file dati dell&#8217;applicazione. I file temporanei delle vostre applicazioni dovrebbero quini essere posti all&#8217;interno della cartella <em>Application_Home\/tmp<\/em> ed essere cancellati dall&#8217;applicazione stessa quando non servono pi\u00f9. Se la vostra applicazione avesse la necessit\u00e0 di creare file che devono essere presenti durante gli avvii successivi, ma non necessitano di backup, dovrete porli all&#8217;interno della cartella <em>Application_Home\/Library\/Caches<\/em>.<\/p>\n<p><strong>NOTA:<\/strong><br \/>\nSe la vostra applicazione crea file di grandi dimensioni, o file che vengono modificati frequentemente, dovreste considerare di inserirli nella cartella <em>Application_Home\/Library\/Caches<\/em> (che non viene &#8220;backuppata&#8221;) e non all&#8217;interno di <em>Application_Home\/Documents<\/em>. Il Backup (o il restore) di grandi file possono infatti rallentare l&#8217;intero processo in modo sisgnificativo. Stesse regole per quanto riguarda i file che vengono modificati frequentemente (e di conseguenza che devono essere &#8220;backuppati&#8221; frequentemente). Posizionare questi file nella cartella &#8220;<em>Caches<\/em>&#8221; fa si che non vengano &#8220;backuppati&#8221; (da iOS 2.2 in poi) durante ogni operazione di sincronizzazione.<\/p>\n<h4>File salvati durante gli aggiornamenti dell&#8217;applicazione<\/h4>\n<p>Quando un utente scarica un aggiornamento per un&#8217;applicazione, iTunes installa l&#8217;aggiornamento in una nuova directory. Successivamente sposta i file utente dalla vecchia installazione alla nuova ed infine cancella la vecchia installazione. I file nelle seguenti directory saranno presenti anche nella nuova versione dopo il processo di aggiornamento:<\/p>\n<ul>\n<li>Application_Home\/Documents<\/li>\n<li>Application_Home\/Library\/Preferences<\/li>\n<\/ul>\n<p>Sebbene anche i file di altre directory potrebbero essere spostati, non dovrete fare affidamento su questo per i vostri aggiornamenti.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qualche giorno fa vi abbiamo proposto un tutorial sulla gestione dei File all&#8217;interno delle nostre applicazioni iPhone,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[9],"tags":[355,352,353,357,173,358,354,356],"class_list":["post-4062","post","type-post","status-publish","format-standard","hentry","category-guide-teoriche","tag-caches","tag-cfpreferences-api","tag-documents","tag-file-sharing","tag-nsuserdefaults","tag-pasteboard","tag-preferences","tag-tmp"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4062","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=4062"}],"version-history":[{"count":11,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4062\/revisions"}],"predecessor-version":[{"id":4364,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4062\/revisions\/4364"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=4062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=4062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=4062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}