приложение Photomania, загруженное с cs193p, показывает пустой TableView - PullRequest
0 голосов
/ 11 марта 2012

Я скачал это приложение из курса Stanford ios, у меня есть свой собственный ключ API Flickr и поместил его в FlickrAPIKey.h, но он все еще дает мне пустой фотограф tableView. Я не уверен, связано это или нет, но я получил эти сообщения журнала:

2012-03-11 09: 18: 46.848 Photomania [23748: 1e03] NSFileCoordinator: Обнаружена неожиданная ошибка сервера. Подробности: Неверное соединение

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

Я нашел проблему.Если кто-то еще сталкивается с этой проблемой, вот решение (в моем случае): приложение загружает данные, только если файл еще не создан, поэтому при первом запуске я еще не ставил клавишу flickr, поэтомуон создал файл без данных.Когда я снова запустил приложение с ключом, оно никогда не загружало данные из flickr, потому что у него уже был файл (без данных.

Вот код, который я изменил в PhotographersTableViewControler.m

- (void)useDocument
{
    if (![[NSFileManager defaultManager] fileExistsAtPath:[self.photoDatabase.fileURL path]]) {
        // does not exist on disk, so create it
        [self.photoDatabase saveToURL:self.photoDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
            [self setupFetchedResultsController];
            [self fetchFlickrDataIntoDocument:self.photoDatabase];

        }];
    } else if (self.photoDatabase.documentState == UIDocumentStateClosed) {
        // exists on disk, but we need to open it
        [self.photoDatabase openWithCompletionHandler:^(BOOL success) {
            [self setupFetchedResultsController];
            //the next line is the only one I changed!!!!!!
            [self fetchFlickrDataIntoDocument:self.photoDatabase];
        }];
    } else if (self.photoDatabase.documentState == UIDocumentStateNormal) {
        // already open and ready to use
        [self setupFetchedResultsController];
    }
}

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

1 голос
/ 12 июля 2012

@ litov Да, вы действительно можете это сделать, хотя в подобных ситуациях мне гораздо проще просто удалить приложение с iPhone / iPad или симулятора;файл базы данных также будет удален.

0 голосов
/ 28 сентября 2012

Литов, похоже, ваше решение будет снова извлекать данные каждый раз. Я предполагаю, что вы не получаете никаких дубликатов, потому что я думаю, что реализация fetchFlickrData ... проверяет существующие записи по уникальному идентификатору и загружает только те, которые еще не загружены.

Тем не менее, он будет извлекать данные из Flickr при каждом запуске приложения, что очень медленно.

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

Вы можете сделать это в файловой системе, зайдя в ~ / Library / Application Support / iPhone Simulator / 5.1 / Applications / и выполнив «rm -fr» в базе данных (это будет каталог с именем, которое вы ему дали , Обратите внимание, что «5.1» в этом пути зависит от того, какую версию симулятора вы используете, и это будет каталог с большим нечитаемым именем GUID, но вы можете перейти на несколько из них и посмотреть, какая из них имеет вашу. приложение.

Намного проще: просто удалите свое приложение из симулятора (так же, как вы бы делали это с iPhone / Pad: удерживайте значок, а затем нажмите X), и документ будет взят с ним.

...