2012-01-29 9 views
6

In modalità aereo o in qualsiasi altro stato in cui l'accesso alla rete non è disponibile, effettuerà una chiamata al numero zero di NSFileManager URLForUbiquityContainerIdentifier:?URLForUbiquityContainerIdentifier: restituisce zero quando l'accesso alla rete non è disponibile?

Un follow-up domanda a questo è: se questa chiamata alla URLForUbiquityContainerIdentifier: non restituisce nulla, ma piuttosto restituisce un URL valido quando l'accesso alla rete non è disponibile questo è un modo per accedere ai documenti basati su cloud in linea?

I documenti Apple indicano che questo restituirà nulla se iCloud non è configurato o non è abilitato. Non menziona cosa accadrà se l'accesso alla rete non è disponibile.

Vorrei testarlo da solo ma da quello che ho capito avrei dovuto testarlo su un dispositivo reale e per testare su un dispositivo non è possibile per me in questo momento. Grazie!

risposta

5

UbiquityContainer è un contenitore di archiviazione locale che contiene i documenti richiesti da iCloud. Questo contenitore è disponibile quando la rete non lo è. Utilizzando il seguente esempio

NSURL *ubiq = [[NSFileManager defaultManager] 
    URLForUbiquityContainerIdentifier:nil]; 
if (ubiq) { 
    NSLog(@"iCloud access at %@", ubiq); 
    // TODO: Load document... 
} else { 
    NSLog(@"No iCloud access"); 
} 

Sarete in grado di accedere ai file e contenitore ubiquità quando il telefono è ancora in modalità aereo. Quando le connessioni di rete ripristinano il demone icloud, i file verranno sincronizzati automaticamente anche in background.

Ecco un ottimo articolo sull'installazione di iCloud. http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1

+1

Grazie! Ho cercato di avvolgere la mia mente per giorni (il che non sono felice di ammettere haha). Penso che la mia confusione fosse basata sul fatto che pensavo che l'ubiquityContainer fosse una posizione nel cloud e non un contenitore di archiviazione locale. Questo era un concetto fondamentale che non stavo afferrando. Grazie ancora! –

+0

Certo, in realtà ho appena risposto ad un altro su iCloud UbiquityContainers. Dovrei menzionare che NSFileManager può bloccare e si consiglia di eseguirlo in una coda diversa. Dai un'occhiata a questa risposta: http://stackoverflow.com/questions/9050359/should-urlforubiquitycontaineridentifier-be-called-in-a-thread-outside-the-main/9051105#9051105 – MobileOverlord

+1

Buon punto sul blocco - è divertente, perché se si guardano i documenti di esempio di Apple o il codice dal sito Web a cui si fa riferimento sopra, le chiamate a URLForUbiquityContainerIdentifier si trovano sul thread principale. Penseresti che Apple prenderebbe nota di questo se fosse un potenziale problema, giusto? –

Problemi correlati