0

このアプリをスタンフォードの ios コースからダウンロードしました。私は独自の flickr API キーを持っていて、それを FlickrAPIKey.h に入れましたが、それでも空の写真家の tableView が表示されます。関連しているかどうかはわかりませんが、次のようなログ メッセージが表示されました。

2012-03-11 09:18:46.848 Photomania[23748:1e03] NSFileCoordinator: 驚くべきサーバー エラーが通知されました。詳細: 接続が無効です

4

3 に答える 3

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];
    }
}

初めてその行を削除できます。誰かが私の過ちから学べることを願っています。

于 2012-03-12T18:17:15.970 に答える
1

@litov はい、確かにそれを行うことができますが、このような状況では、iPhone/iPad またはシミュレーターからアプリを削除する方がはるかに簡単だと思います。データベースファイルも削除されます。

于 2012-07-12T13:58:53.723 に答える
0

Litov、あなたのソリューションは毎回データを取得するようです。fetchFlickrData... の実装は一意の ID で既存のレコードをチェックし、まだロードされていないレコードのみをロードしていると思うので、重複を取得していないと思います。

とはいえ、アプリを起動するたびに Flickr からデータを取得するため、処理が遅くなります。

ただし、問題は最初の実行時に適切にセットアップされていなかったことがわかっているため、このハックなしで修正できます。このデモに基づくプロジェクトで同様の問題が発生し、データベース ファイルを削除することで解決しました。シミュレーターから。

~/Library/Application Support/iPhone Simulator/5.1/Applications/ に移動し、データベースで「rm -fr」を実行することにより、ファイル システムでこれを行うことができます (これは、指定した名前のディレクトリになります。そのパスの「5.1」は、実行しているシミュレーターのバージョンによって異なり、大きくて判読できない GUID 名を持つディレクトリになりますが、それらのいくつかに cd して、どれに .app があるかを確認できます。

さらに簡単です: シミュレーターからアプリを削除するだけです (iPhone/Pad から削除するのと同じ方法: アイコンを押したまま X をクリックします)。これにより、ドキュメントが削除されます。

于 2012-09-28T19:05:40.580 に答える