从cs193p下载的Photomania应用程序显示一个空的TableView

时间:2012-03-11 07:27:05

标签: ios core-data flickr cs193p

我从Stanford ios课程下载了这个应用程序,我有自己的flickr api密钥,并把它放在FlickrAPIKey.h中,但它仍然给我一个空的摄影师tableView。 我不确定它是否相关,但我收到了这些日志消息:

  

2012-03-11 09:18:46.848 Photomania [23748:1e03] NSFileCoordinator:发出惊人的服务器错误信号。详细信息:连接无效

3 个答案:

答案 0 :(得分:2)

我发现了问题。 如果其他人面临这个问题,这里是解决方案(在我的情况下): 如果文件尚未创建,应用程序仅下载数据,因此第一次运行时,我还没有放入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 :(得分:1)

@litov是的,你确实可以这样做,虽然在这样的情况下我发现从iPhone / iPad或模拟器中删除应用程序要容易得多;然后,数据库文件也将被删除。

答案 2 :(得分:0)

Litov,看起来您的解决方案每次都会再次获取数据。我猜你没有得到任何重复项,因为我认为fetchFlickrData的实现是按唯一ID检查现有记录,只加载那些尚未加载的记录。

尽管如此,每次启动应用程序时都会从Flickr获取数据,这很慢。

但是,既然你知道问题是你没有正确设置第一次运行,你就可以在没有这个hack的情况下解决这个问题:基于这个演示的项目我遇到了类似的问题,我通过删除解决了这个问题来自模拟器的数据库文件。

您可以在文件系统中进入〜/ Library / Application Support / iPhone Simulator / 5.1 / Applications /并在数据库上执行“rm -fr”(它将是一个带有您给它的名称的目录) 。 请注意,该路径中的“5.1”取决于您正在运行的模拟器的版本,并且将是一个具有大且不可读的GUID名称的目录,但是您可以将其中的几个进行查看,并查看哪个具有您的。应用

更容易:只需从模拟器中删除你的应用程序(就像你从iPhone / Pad那样的方法:按住图标然后点击X),这将带来文件。