我从Stanford ios课程下载了这个应用程序,我有自己的flickr api密钥,并把它放在FlickrAPIKey.h中,但它仍然给我一个空的摄影师tableView。 我不确定它是否相关,但我收到了这些日志消息:
2012-03-11 09:18:46.848 Photomania [23748:1e03] NSFileCoordinator:发出惊人的服务器错误信号。详细信息:连接无效
答案 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),这将带来文件。