MP4ファイルを「外部ストレージを許可する」NSData属性としてCoreDataに保存しています。このデータへのパス文字列またはNSURLを取得するにはどうすればよいですか?また、mp4ファイルが1 MB未満で、内部に保存された場合はどうなりますか?その場合、パスを提供できなくなりますか?データが外部に保存されたか内部に保存されたかを簡単に判断する方法はありますか?
1 に答える
2
Core Dataは、パスを取得する方法を提供しません。お気づきのように、外部ファイルを使用していない可能性があるため、パスがあることを保証することすらできません。パスが存在するかどうか、またはパスが何であるかを知る必要がないものとして設計されており、APIはその姿勢を反映しています。
非公式にファイルを見つけることが可能です。データストアが呼び出されFoo.sqlite
た場合、外部ファイル(存在する場合)は、という名前の同じフォルダー内のサブディレクトリにあります.Foo_SUPPORT/_EXTERNAL_DATA/
。ただし、実際のファイル名は単なるUUIDであるため、どのファイル名がどの管理対象オブジェクトに対応するかを判断することはまだ自動ではありません。最善の方法は、管理対象オブジェクトの変更日を追跡してから、同じ変更日を持つファイルを探すようなものです。
何らかの理由で本当にファイルを取得する必要がある場合は、独自の外部参照コードをロールする必要があります。これは本当に簡単です。
于 2012-12-19T03:36:40.480 に答える