2012-01-29 1 views
6

Когда в режиме самолета или в любом другом состоянии, где доступ к сети недоступен, будет звонить в NSFileManager URLForUbiquityContainerIdentifier: return noil?Имеет ли URLForUbiquityContainerIdentifier: возвращает нуль, когда доступ к сети недоступен?

Следить за вопрос, это: , если этот призыв к URLForUbiquityContainerIdentifier: не возвращает ноль, а возвращает действительный URL, когда доступ к сети не доступен этот способ получить доступ к документам на основе облачных вычислений в автономном режиме?

Apple docs заявляет, что это вернет nil, если iCloud не настроен или не включен. Он не упоминает, что произойдет, если доступ к сети недоступен.

Я бы испытал это сам, но из того, что, как я понимаю, мне пришлось бы протестировать это на реальном устройстве, и тестирование на устройстве в настоящее время невозможно для меня. Спасибо!

ответ

5

UbiquityContainer - это локальный контейнер хранения, содержащий документы, запрошенные у iCloud. Этот контейнер доступен, когда сеть отсутствует. При использовании в следующем примере,

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

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

Вот отличная статья о настройке iCloud. http://www.raywenderlich.com/6015/beginning-icloud-in-ios-5-tutorial-part-1

+1

Спасибо! Я пытаюсь обернуть голову вокруг этого в течение нескольких дней (что я не рад признать ха-ха). Я думаю, что моя путаница была основана на том факте, что я думал, что ubiquityContainer был местом в облаке, а не локальным контейнером для хранения. Это была фундаментальная концепция, которую я не понимал. Еще раз спасибо! –

+0

Уверен, я на самом деле просто ответил другому на iCloud UbiquityContainers. Я должен упомянуть, что NSFileManager может блокироваться и его рекомендуется запускать в другой очереди. Посмотрите этот ответ: http://stackoverflow.com/questions/9050359/should-urlforubiquitycontaineridentifier-be-called-in-a-thread-outside-the-main/9051105#9051105 – MobileOverlord

+1

Хорошая мысль о блокировке - это смешно, потому что если вы посмотрите пример документов от Apple или код с сайта, на который вы ссылались выше, вызовы на URLForUbiquityContainerIdentifier находятся в основном потоке. Вы могли бы подумать, что Apple запомнит это, если это будет потенциальная проблема, не так ли? –

Смежные вопросы