2017-08-09 21 views
0

私はiOSにはかなり新しいので、私の問題のための最善の解決策はわかりません。私はAPIを使ってアプリケーションに表示するデータを取得します(要求を送信し、Alamofireを使用してjsonファイルを取得する)。私の問題は、APIの作成者が常にこの問題について知っているので、私はこのAPIに常に頼ることができないということです。だから私は私のアプリで必要なすべてのjsonファイル(数十)を保存することを考えていた。これはベストプラクティスですか?もしそうなら、どうしたらいいですか?Swift - インストール前にアプリにjsonファイルを保存する方法

+1

エンドポイントに接続できない場合は、必ずコンテンツファイルをプロジェクトに追加して読み込むことができます。ファイルをプロジェクトに追加し、「バンドルリソースのコピー」として選択することができます。 –

+0

私は必要なものと同じように聞こえます。 – Efi

答えて

0

あなたはそれらのplistsであなたのアプリをバンドルする必要があります。アプリの初回起動時に利用できるようになりますが、アプリのサイズも大きくなります(実際には個々のplistサイズに依存します)。

plistは、Bundleリソースにコピーする必要があります。ワークスペース/プロジェクトに追加するだけです。

これらのplistは、.storyboard、.xibファイル、イメージなどのアプリケーションにバンドルされます。これらはあなたのIPAから直接読み取ることができるようまた、コピーバンドルリソースを念>> BuildPhases-を標的 - を確認してその後これらのプレースメントリストに

enter image description here

を任意の秘密データを保持しません。あなたのファイルはそこにリストされるべきです。 enter image description here

同梱のplist(スウィフト3)からデータを読み取るために:私は、問題を修正再表示し、私が正しく理解している場合を教えてみましょう

if let fileUrl = Bundle.main.url(forResource: "fileName", withExtension: "plist"), 
      let data = try? Data(contentsOf: fileUrl) { 
      if let result = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) { 
       print(result) // result is of type Any here, and needs to be converted to appropriate type(depends on plist root) 
      } 
     } 
+0

私は必要なもののように聞こえる。私は新しいので、詳細を教えていただけますか? – Efi

+0

これらのplistは、.storyboard、.xibファイル、イメージなどのアプリケーションにバンドルされています。また、これらはあなたのipaから直接読むことができるので、これらのplistsに秘密のデータを保持しないでください。 –

0

。あなたのアプリケーションは、データを取得するためにサーバーへの呼び出しに依存しており、サーバーは必ずしも応答するとは限りません。サーバーへのヒットが成功したときに、サーバーが失敗したときにフェッチしたデータを使用してそれらを使用できるようにすることを考えています。

この場合、これはアプリによって異なります。アプリケーションがライブコンテンツをユーザーに表示することに依存する場合、古いコンテンツを表示することは役に立たず、データを保存することは無意味です。しかし、ユーザーに提示しているコンテンツがほぼ同じである場合や、このデータから多くの変更が加えられていない場合は重要でない場合は、このデータを保存してユーザーに表示することをお勧めしますモード"。

このデータを保存するにはどうすればよいですか? iOSにはコンテンツを保存する方法がいくつかあります。 1つはあなたのオブジェクトをNSUserDefaultsに保存していますが、これはあまり推奨されていません。他の2つの方法は、SQLLiteまたはCoreDataに保存しています。ドキュメンテーションでもっと調べたり、これを行う方法に関する記事を読むことができます。私はSQLLiteを私の個人的な好みとして保存するのが好きです。あなたは3つすべてを読んで、あなたのニーズを最もよく満たすものを見てください。

これが役に立ちます。がんばろう。

+0

ありがとうございます。私はサーバーの応答に頼ることができないので、私はアプリケーションにjsonファイルを追加したいと思います。ユーザーがアプリをインストールすると、私はオフラインにしてもデータを見ることができます。そして、はい、データはあまり変わらないので、大丈夫です。 – Efi

関連する問題