DropBox APIに少し不満があります。シンプルでストレートなものであるはずですが、シンプルなシンクを簡単に行う方法についてはまだ説明していません。iPhone DropBox APIとのシンプルな同期
私は、DropBox APIに付属のreadmeに記載されているすべての指示に従っています。すべてをテストするために、DropBoxからファイルをダウンロードしてアップロードするための2つのボタンを作成しました。ファイルは私のアプリケーションドキュメントフォルダにあります。
これは見事に動作します。しかし、私は今、単純に同期を達成する方法を疑問に思って
-(void) DBupload:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyExample.txt"];
// NSError *error;
[self.restClient uploadFile:@"MyExample.txt" toPath:@"/MyExamplePath" fromPath:filePath];
}
-(void) DBdownload:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"MyExample.txt"];
NSError *error;
[self.restClient loadFile:@"/myExamplePath/MyExample.txt" intoPath:filePath];
}
を。今、私は手動でアップロードしてダウンロードできます。アプリケーションのフォルダ内のtxtが、より最近のものであるならば私のアプリのフォルダ内または私のDropboxフォルダ内のMyExample.txtが
- :しかし、私は同期するために必要なことにあります。 Dropboxのにドロップします(古いを上書き)、ドロップボックス内のtxtが、より最近のものである場合、すなわち、私DBupload方法
- 呼び出します。つまり、おそらく、私は
私DBdownloadメソッドを呼び出し、アプリのフォルダにそれをダウンロードしてくださいちょうどあまりにも愚かではなく、ドロップボックスの詳細どこかにこれを達成するためにどのように単純で、まっすぐ進む 仕事?
私はthisがあることを知っていますが、実際にはコードサンプルを提供していません。
ありがとうございます。
EDIT
OK、私は私の最初のステップは、Dropboxの中で発見されたMyExample.txtの最終更新日時を見つけることであることを考え出し。
私は単純に、このコマンドを入れているDBsyncを呼ばれる素晴らしい方法を書いた:
-(void) DBsync
{
[self.restClient loadMetadata:@"/myExamplePath"];
}
これは、メタデータを取得する次のメソッドを呼び出します。私のようなより多くのダムの人々が存在する場合(これは、この記事への提案の答えだった、と何が起こっているか、それは、プレーンとなるように、私は少し出て、それを次のようにコメントし
- (void)restClient:(DBRestClient*)client loadedMetadata:(DBMetadata*)metadata {
NSLog(@"restClient:loadedMetadata function called");
NSEnumerator *e= [metadata.contents objectEnumerator]; // indexes files in dropbox?
DBMetadata *dbObject; // loads metadate we need, e.g. lastModifiedDated
int numberOfFiles = [metadata.contents count]; // counts files in DropBox - I guess we don't really need this
NSLog(@"numberOfFiles %i", numberOfFiles);
while ((dbObject = [e nextObject])) { // this goes through every single file in the DropBox
if (!dbObject.isDirectory) { // this determines whether we are talking about a file or a folder
NSString *fileName = [dbObject.path lastPathComponent]; // this puts the name of the last component, e.g. in /MyExamplePath/MyExample.txt = MyExample.txt into fileName
NSLog(@"File which is currently being checked: %@", fileName);
if ([fileName isEqualToString:@"MyExample.txt"]) {
NSLog(@"Found it: %@", fileName);
NSLog(@"Date last modified: %@", dbObject.lastModifiedDate);
/* to do: call dbupload if dbObject.lastModifiedDate > than your local file*/
}
}
}
}
私は一度、次の手順を掲載しますそうするために管理...
ありがとうございました。それに応じて自分の投稿を更新しました。私はあなたの答えを受け入れる前に、それはちょうど質問である必要があります:それはif([fileName ...ではなく、if(![fileName ... right?私はそれがちょうどタイプミスだったと思います。ローカルファイルですか?あなたの助けはこれで非常に高く評価されるでしょう。私たちは単純な同期を行う方法についての良いチュートリアルからいくつかのステップを離れています... –
日付の比較について心配することはありません、ちょうどそれを行う方法を考え出します。それに応じて自分の投稿を更新します。 –