お使いのブラウザは、バージョンが古すぎます。

このサイトは、Internet Explore8・Internet Explore9には対応しておりません。
恐れ入りますが、お使いのブラウザをバージョンアップしていただきますよう宜しくお願いいたします。

【iOS】ファイルの更新日時を取得する

最近はサンドボックス内のファイル情報の取得について勉強しています。
今回はサーバー上のファイルとローカルファイルの日時を比較する方法について書きたいと思います。

ローカルファイル日時を取得

// ファイルマネージャーを生成
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
NSDate *fileCreationDate;
NSString *filePath = @"ファイルパス";

// ファイルやディレクトリの情報取得する
NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:&error];
if (error != nil) {
     NSLog(@"Error : %@", [error localizedDescription]);
}else{
     // ローカルファイルの更新日時を取得する
     fileCreationDate = [attributes objectForKey:NSFileModificationDate];
}

NSFileModificationDateを利用してファイルの更新日時を取得しています。

日付を比較

NSDateを大小比較する場合はNSComparisonResultというクラスを利用します。

// ローカルファイルの更新日時を取得する
fileCreationDate = [attributes objectForKey:NSFileModificationDate];
NSLog(@"ローカルのファイル更新日時:%@",fileCreationDate);

// サーバーファイルの更新日時をNSDateに変換
NSDate* serverTimestamp_date = [formatter dateFromString:serverTimestamp];
NSLog(@"サーバーのファイル更新日時:%@",serverTimestamp_date);

// 日付を比較---------------------------------------------------------------
NSComparisonResult result_comparison = [serverTimestamp_date compare:fileCreationDate];
    switch(result_comparison) {
        case NSOrderedSame: // 一致したとき
             NSLog(@"同じ日付です");
             break;
        case NSOrderedAscending: // serverTimestampが小さいとき
             NSLog(@"ローカルが最新");
             break;
        case NSOrderedDescending: // serverTimestampが大きいとき
             NSLog(@"サーバーが最新");
             break;
    }
}

実行結果

ログを表示してみましょう。

Controller[765:a0b] ローカルのファイル更新日時:2014-03-07 05:03:01 +0000
Controller[765:a0b] サーバーのファイル更新日時:2014-03-04 04:19:40 +0000
Controller[765:a0b] ローカルが最新

各ファイルの更新日時を取得することができました。
更に比較して条件に合った処理を追加していけそうですね!

今回はこれでおしまいです。

コメントをどうぞ

メールアドレスは公開されません。* が付いている欄は必須項目です。


お気軽にお問い合わせください。

日本VTR実験室では、お仕事のご依頼、ブログ・コラムのご感想などを受け付けております。
アプリ開発・コンテンツ制作でお困りでしたら、お気軽にご相談ください。
ご連絡お待ちしております。

お問い合わせはこちらから

03-3541-1230

info@nvtrlab.jp

電話受付対応時間:平日AM9:30〜PM6:00