Swift

Swift:DropboxのOS Xサンプルプログラム解析

ダラダラとDropboxのOS X Core APIサンプルプログラムを解析しています。

Dropboxに接続できてからずいぶん時間が経っているのですが、サンプルプログラムが動いていませんでした。実は、動いたら何がどうなるかわからなかったので、Dropboxに接続した後、何をすればいいかわからなかったので気が向いたときにコードを解析していました。

サンプルプログラムは、今のところObjective-Cしかありませんので、Objective-Cになります。

結論:

DropboxのOS X Core APIサンプルプログラムがちゃんと動くと、次のような写真が表示されます。自分が書いたプログラムでもないのに、これには感動しました。

スクリーンショット 2014-10-18 16.05.27

わかったこと:

  • もう一度、整理しなおすと次のことが重要です。いずれもDropboxにアプリを登録したときのパラメタになります。
    NSString* appKey = @"App keyをセット"; 
    NSString* appSecret = @"App secretをセット"; 
    NSString* root = kDBRootDropbox; 
  • もうひとつ忘れてはいけないのは、Plistの追加。
    プロジェクト名➡️TARGET APPS➡️Info➡️URL Types
    ※ URL Schemesにdb-App keyを登録。 
    ※ keyの前にdb-が必要。 
  • Dropboxにアクセスするには、どのフォルダにアクセスするか、rootフォルダとの紐付けが必要です。プログラムの中にrootフォルダを設定する箇所があり、ここで紐付けるのです。いうまでもなく、設定するには、その前に実際にそのフォルダをDropboxに作っておく必要があります。これができていないと、エラーメッセージが出ます。
    蛇足:Photosフォルダには、コスモスのような.jpgファイルを入れておきます。サンプルプログラムが取り扱うファイルタイプは、.jpgと.jpegです。

    rootフォルダをDropboxの中に作成する。
     - サンプルプログラムではPhotos
    
  • サンプルプログラムでは次の箇所がrootフォルダ紐付けになります。

– (void)didPressRandomPhoto:(id)sender {
self.xbRandomPhotoButton.state = NSOffState;
NSString *photosRoot = nil;
if ([DBSession sharedSession].root == kDBRootDropbox) {
photosRoot = @”/Photos”;
} else {
photosRoot = @”/”;
}
[self.restClient loadMetadata:photosRoot withHash:self.ppPhotosHash];
}

  • 参照したブログの中には、[self.restClient loadMetadata:“/”];でOKとするものが多かったので、これで乗り切ろうとしたのですが、少なくともサンプルプログラムはここで説明したような手順を踏まないと、ちゃんと動かせませんでした。
    これで前進できそうです。

追記:前進かと思いきや、Objective-CからSwiftへの変換がわからないものが出てきました。変換自体は簡単にできるのですが、restClientという変数(?)絡みの問題です。setter/getter(?) すぐに沈没。ここは一旦退散して、退散するには惜しい状況なのですが、Syncを調べ直したいと思います。

– (DBRestClient *)restClient {
if (!restClient) {
restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
restClient.delegate = self;
}
return restClient;
}

Categories: Swift, 技術