2012-03-11 2 views
0

私はこのアプリケーションをStanford iosコースからダウンロードしました。私自身のflickr apiキーを持ってFlickrAPIKey.hに入れましたが、空の写真家tableView。 私はそれが関連しているかいないかどうかわからないんだけど、私はそれらのログメッセージを得た:18:cs193pからダウンロードしたPhotomaniaアプリが空のTableViewを表示しています

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

答えて

1

@litovはい、実際にそうすることはできますが、このような状況では、 iPhone/iPadまたはシミュレータを起動すると、データベースファイルも削除されます。

+0

はい、私はそれをnoで学んだw。 tnx – litov

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

を変更するコードがあります最初にその行を削除することができます 私の誰かが私のミスから学ぶことができたら幸いです。

0

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

でも、それは遅く、あなたがアプリケーションを起動するたびにFlickrからデータを取得するつもりです。

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

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

もっと簡単に:シミュレータからアプリを削除してください(iPhone /パッドと同じ方法でアイコンを押したままXをクリックしてください)。

+0

私はシミュレータからアプリを削除しましたが、まだ動作していません。しかし、私はXcode 6とIOS8を使用しています。それと関係はありますか? –

関連する問題