2012-01-15 8 views
1

Dropbox iOS APIを使用して、さまざまなデバイスを同期しています。次のコードを使用して、ファイルをダウンロードして新しいファイルをアップロードするようにファイルが変更された日付を比較しようとしています。問題は、ただダウンロードしていて、決してアップロードしていないということです。何かヒント?Dropboxを使用してiOS APIとNSDateを使用して、ファイルをダウンロードまたはアップロードできない

- (void)dropboxAuth { 
    if (![[DBSession sharedSession] isLinked]) { 
     [[DBSession sharedSession] link]; 
    } 
    else { 
     NSString *filename = @"NotesList.plist"; 
     NSString *destDir = @"/"; 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
     NSString *documentsDir = [paths objectAtIndex:0]; 
     NSString *address = [documentsDir stringByAppendingPathComponent:@"NotesList.plist"]; 

     [[self restClient] loadMetadata:@"/"]; 

     if([[NSFileManager defaultManager] fileExistsAtPath:address]) { 
      NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfItemAtPath:address error:&error]; 
      NSDate *fileDate =[dictionary objectForKey:NSFileModificationDate]; 

      if ([[fileDate earlierDate:self.metaData.lastModifiedDate]isEqualToDate:fileDate]) { 
       [self.restClient loadFile:[NSString stringWithFormat: @"%@/%@", destDir, filename] 
           intoPath:address]; 
       NSLog(@"Downloading"); 
      } 
      else if ([[self.metaData.lastModifiedDate earlierDate:fileDate] isEqualToDate:self.metaData.lastModifiedDate]) { 
       [[self restClient] uploadFile:filename toPath:destDir fromPath:address]; 
       NSLog(@"Uploading"); 
      } 
     } 
    } 
} 
+0

有用な投稿が見つかりました:http://stackoverflow.com/questions/5950168/a-simple-sync-with-the-iphone-dropbox-api – mstottrop

答えて

2

これは疑わしいです:

if ([[fileDate earlierDate:self.metaData.lastModifiedDate]isEqualToDate:fileDate]) { 

これは、常にself.metaData.lastModifiedDatefileDateに等しいかfileDateは常に2つの日付の前であることをことをどちらか私には意味し、trueに評価されます。

正直なところ、これらの条件文を解析することにも問題があります。別の方法で評価しようとするとどうなりますか?

if (nil == fileDate || fileDate.timeIntervalSinceReferenceDate < self.metaData.lastModifiedDate.timeIntervalSinceReferenceDate) 
{ 
    [self.restClient loadFile:[NSString stringWithFormat: @"%@/%@", destDir, filename] 
         intoPath:address]; 
    NSLog(@"Downloading"); 
} 
else if (nil != fileDate && fileDate.timeIntervalSinceReferenceDate > self.metaData.lastModifiedDate.timeIntervalSinceReferenceDate) { 
    [[self restClient] uploadFile:filename toPath:destDir fromPath:address]; 
    NSLog(@"Uploading"); 
} 

また、日付が等しい場合はどちらもしたくないと思いますか?

関連する問題