0

私は iPhone を初めて使います。最初に 100 枚の画像をダウンロードしたい場合は誰かに教えてください。2 回目は 100 枚の画像すべてで 10 枚の画像のみが変更されます。その 10 枚の画像を上書きしたいのですが、どうすればよいですか??

4

3 に答える 3

1

初回同期は同期時刻を保存します。そして、この時間を次の同期で Web サービスに渡します。したがって、この応答では、最後の同期時間の後に更新されるレコードのみを取得し、その画像のみを更新します。ただし、このためには、Web サービスに時間タグを追加する必要があります。

于 2013-09-12T12:23:29.477 に答える
0

これが役立つことを願っています。

最初に、変更された画像を追跡し、それらのみをダウンロードする必要があります。

そのためには、次の 2 つの方法があります。

1) 画像が変更されるときにサーバー側で画像の別の名前を設定し、最初に画像の名前を一覧表示する 1 つの Web サービスをダウンロードするときよりも呼び出すことができます。これらの名前をダウンロードした画像の名前 (つまり、ドキュメント ディレクトリにあるもの) と比較してください。それらがダウンロードと異なる場合は、そうでない場合。

2) 以前にダウンロードした画像の情報を保存するローカル データベースを作成し、2 回目のダウンロード時にそれらの値を比較することができます。ダウンロードと異なる場合は、そうでない場合。

于 2013-09-12T11:31:05.913 に答える
0

たとえば、サーバーの応答が url 以外の画像属性を提供する場合、一意の ID を持つ画像を考えてみましょう。

サーバーに変更がある場合、その応答で、属性の一部を使用して変更された画像を取得します。変更したイメージ ID を保存してダウンロードします。

ここで答えた SO の質問に従うことができます。

iOS - 変更された場合にのみファイルをダウンロード (NSURL & NSData)

コードを持っている

私はこの方法を使用して、ファイルの変更日を検出することになりました:*ここで見つかりまし

-(bool)isThumbnailModified:(NSURL *)thumbnailURL forFile:(NSString *)thumbnailFilePath{
    // create a HTTP request to get the file information from the web server
    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:thumbnailURL];
    [request setHTTPMethod:@"HEAD"];

    NSHTTPURLResponse* response;
    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

    // get the last modified info from the HTTP header
    NSString* httpLastModified = nil;
    if ([response respondsToSelector:@selector(allHeaderFields)])
    {
        httpLastModified = [[response allHeaderFields]
                            objectForKey:@"Last-Modified"];
    }

    // setup a date formatter to query the server file's modified date
    // don't ask me about this part of the code ... it works, that's all I know :)
    NSDateFormatter* df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

    // get the file attributes to retrieve the local file's modified date
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSDictionary* fileAttributes = [fileManager attributesOfItemAtPath:thumbnailFilePath error:nil];

    // test if the server file's date is later than the local file's date
    NSDate* serverFileDate = [df dateFromString:httpLastModified];
    NSDate* localFileDate = [fileAttributes fileModificationDate];

    NSLog(@"Local File Date: %@ Server File Date: %@",localFileDate,serverFileDate);
    //If file doesn't exist, download it
    if(localFileDate==nil){
        return YES;
    }
    return ([localFileDate laterDate:serverFileDate] == serverFileDate);
}
于 2013-09-12T11:26:22.807 に答える