2016-07-24 28 views
0

アプリを実行するために必要な大量のデータを含むテキストファイルを作成する必要があります。今私は、ライブラリフォルダがそのようなデータを格納するのに理想的だと考えました。私はプログラムのメインビューのviewDidLoadメソッド内で、ライブラリフォルダにサブフォルダ(データファイルを格納する場所)を作成しました。だからここに私はこのコードを実行すると、私はライブラリフォルダ内のディレクトリの一覧を表示するとき、それから明らかに記載されているされていると私のサブフォルダが正常に作成されたサブフォルダの1IOSアプリケーション用に開発者が生成したデータを保存する場所

let filemgr = NSFileManager.defaultManager() 
    let dirPaths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory,.UserDomainMask, true) 
    let libDir = dirPaths[0] as! String 

    let newDir = (libDir as NSString).stringByAppendingPathComponent("subFolder1") 

    //Create the sub-dir else throw error 
    do { 
     try filemgr.createDirectoryAtPath(newDir, withIntermediateDirectories: false, attributes: nil) 
    } catch let error as NSError { 
     NSLog("Unable to create directory \(error.debugDescription)") 
    } 

を作成するための私のコードです。さて、私はこのコードを削除して(すでに目的を果たしているので)、もう一度別のデバイスにアプリケーションをビルドしようとしましたが、新しいサブフォルダはこの新しいデバイスには期待どおり表示されません。私は一度作成したと思うと、ライブラリフォルダ内のファイル/フォルダはそのフォルダ内に存続し(アプリケーションバンドルで作成されたファイルに似ています)、アプリケーションがインストールされているどのデバイスでも利用可能になります。明らかに私は間違っていた。だから、私はどこのアプリケーションがインストールされているすべてのデバイスで利用できると期待しているユーザー作成ファイル/フォルダを格納するのですか?あなたの考えをありがとう

+0

あなたが探している動作が明確ではありません。ユーザーが作成したか、開発者が作成したデータですか?単一のユーザーのすべてのデバイス、すべてのアプリユーザーのデバイス間で同期を維持しようとしているのか、または各デバイスにダウンロード/インストールすることを確実にしていますか(この場合、このデータをアプリケーションに含めることができるか、別々に更新する必要がありますか?) – Jonah

+0

@Jonah開発者が作成したデータです。このデータは、アプリをダウンロードする各端末にインストールする必要があります。アプリのバンドルのすべてのデータと同じです。このデータは、アプリの特定の部分を実行するために必要です。 –

答えて

-1

あなたがiPadにあなたのアプリをインストールし、いくつかのレコードを追加してからiPhoneに同じアプリをインストールすれば、新しくインストールされたレコードをiPhoneに表示したいのですか?

この場合、iCloudを使用する必要があります。

+0

それは私が意味するものではありません。このデータは、アプリがデバイスにインストールされるたびに、アプリバンドルの他のデータとともにインストールする必要があるデータです。私(開発者)はデータを生成し、Libraryフォルダに格納します。このデータはアプリの特定の部分を実行する必要があるため、アプリをインストールするすべての端末でこのデータを利用できるようにする必要があります。それは明確ですか? –

+0

データは、ユーザーが何らかの方法で編集することを目的としたものではありません。それは基本的には読み取り専用 –

+0

だから、それをアプリのバンドルに入れて、それで済ませてください。なぜそれがコンパイル時に設定され、決して変更されない場合、ランタイムディレクトリにコピーするのですか? –

0

これらのファイルをアプリケーションバンドルに含めることはできないと仮定すると、おそらくLibrary/Application Support/がその場所に適しています。そこに独自のサブディレクトリを作成することは自由ですが、その存在を確認し、必要に応じてすべてのデバイスで作成する必要があります。

アプリの起動プロセスの一環として、必要なディレクトリとファイルが存在するかどうかを確認し、必要に応じて作成/更新します。アプリが以前のバージョンのアプリ(ユーザーがアップデートをインストールしたばかり)の場合はApplication Supportのデータを起動して遭遇する可能性があるので、セットを変更した場合にアプリが起動するたびにこのチェックを繰り返してくださいアプリケーションのバージョン間に必要なデータファイルの

明らかにこのデータを再作成することができるので、ユーザーバックアップから除外したい場合もあります。 Library/Application Support/ディレクトリにFile System Programming Guide

  • 入れアプリ作成のサポートファイルを参照してください。一般に、このディレクトリには、アプリケーションが実行するために使用するファイルが含まれていますが、そのファイルはユーザーから隠されている必要があります。このディレクトリには、データファイル、設定ファイル、テンプレート、およびアプリケーションバンドルからロードされた変更されたバージョンのリソースも含まれます。
  • Documents/Application Support/のファイルは、デフォルトでバックアップされています。バックアップからファイルを除外するには、NSURLIsExcludedFromBackupKeyキーを使用して-[NSURL setResourceValue:forKey:error:]を呼び出します。再作成またはダウンロードできるファイルは、バックアップから除外する必要があります。これは、大きなメディアファイルにとっては特に重要です。アプリケーションがビデオファイルまたはオーディオファイルをダウンロードする場合は、それらがバックアップに含まれていないことを確認してください。
+0

再作成可能なファイルをバックアップに含めないでください。 –

+0

ユーザーのバックアップのサイズを不必要に増やすことは不合理です。バックアップ時間を長くし、限られた帯域幅、より多くのバッテリ電源を使用し、iCloudバックアップの場合はユーザーの限られたデータストレージクォータを消費します。必要なときに再作成できるデータをバックアップするようユーザーに強いることはありません。 – Jonah

+0

わかりました。私は自分のライブラリフォルダにディレクトリをリストアップしており、デフォルトでそこにある唯一のディレクトリは "Preferences"と "Caches"と "file.txt"という名前のファイルです。 "Application Support" –

関連する問題