2016-08-24 6 views
1

iOS(特に一時ディレクトリ)にローカルに保存されている複数のファイルのサイズと最終更新日を取得する必要があります。ファイルはNSURLによって参照されている:私はこれを行うための2つの方法を見つけたNSFileManager.attributesOfItemAtPathとファイルサイズと修正日時のUSURL.getResourceValueとの比較

let fileURL: NSURL = ... 

NSFileManager.defaultManager().attributesOfItemAtPath(fileURL.path!)[NSFileSize] 

var size: AnyObject? 
fileURL.getResourceValue(&size, forKey: "NSURLFileSizeKey") 

2の違いは何ですか?他のものよりも演奏者は演奏者ですか?

答えて

1

1つはパスをとり、1つはファイルURLをとります。開始方法によっては、パスまたはURLを使用する方がよい場合があります。

NSFileManagerのさまざまな方法があり、ファイルのURLを列挙して特定のファイル属性をプリロードすることができます。これらのAPIのいずれかを使用している場合は、NSURLgetResourceValueを使用すると、データが既に配置されているのでより効率的になります。

NSURL getResourceValueは、おそらく(おそらく?)、個々の属性を取得するよりも効率が悪いすべてのファイル属性をプリロードするため、より効率的な可能性があります。しかしそれは実装の詳細です。

最後に、これは早すぎる最適化です。これまでに書いたものと保守しやすいものを使用してください。パフォーマンス上の問題がある場合を除いて、パフォーマンスについて心配しないでください。

+0

私の場合は、tempDirがNSURL.fileURLWithPath(NSTemporaryDirectory()の場合、NSFileManager.defaultManager()、contentsOfDirectoryAtURL(tempDir、IncludesPropertiesForKeys:[String]()、options:[]) ' )、isDirectory:true) 'だから、それはNSFileManager –

+0

から始まります。' includingPropertiesForKeys'パラメータ値を更新して、 'getResourceValue'を使ってアクセスしたい実際のファイル属性を含めます。既に 'NSURL'を持っており、必要な属性をプリロードすることができるので、' attributesOfItemAtPath'を使うよりも効率的です。 – rmaddy