0

私は現在iOSアプリケーションを開発しており、Box.NetSDKを実装しています。SDKのネイティブ機能ではないファイルを移動する機能を除いて、すべてが機能するようになりました。私はそれを通して自分の道をひねろうとしています。

Box.Netの構造に精通している場合、各ファイル/フォルダーには、それ自体のID番号と、その親のIDがあります。ファイルを移動したい場合は、ファイルの親ID番号を変更して、新しい場所を指すようにすることになっています。しかし、正しく動作させることができないようです。アプリケーションがクラッシュし続けるようです。

これは私がこれまでに一般化したものです。

BoxObject *boxObject = [[[Box objectWithID:(ID#ofParent)] children] objectAtIndex:i];
[boxObject parent].boxID = 0; // <-- Problem (causes crash)

私もこれを試しました。

[boxObject setParent:[Box folderWithID:[BoxID numberWithInt:i]]];

boxObject変数は、移動したいファイルです。その親IDを0に設定しています。これは、ルートフォルダーであると想定されています。ただし、ファイルの親IDを再割り当てしようとすると、アプリケーションがクラッシュします。ファイル/フォルダを正常に移動する方法についてのアイデアはありますか?どんな助けでも大歓迎です!前もって感謝します!

4

1 に答える 1

0

わかった。SDKを使用して社内でこれを修正する方法はなかったと思います。そのため、外部のPUTリクエストを送信する必要がありました。次のコードを使用して、ファイルの移動を処理しました。

- (void)moveItem:(BoxObject *)object toParentFolderWithID:(BoxID *)parentID
{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.box.com/2.0/files/%@", object.boxID]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"PUT"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *auth = [NSString stringWithFormat:@"BoxAuth api_key=%@&auth_token=%@",[Box boxAPIKey],[defaults objectForKey:@"box-api-auth-token"]];

NSString *payload = [NSString stringWithFormat:@"{\"parent\": {\"id\": %@}}", parentID];
[request setHTTPBody:[NSMutableData dataWithData:[payload dataUsingEncoding:NSUTF8StringEncoding]]];
[request setValue:auth forHTTPHeaderField:@"Authorization"];

NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
[connection start];
}

Box SDKを初めて使用する場合と同様に、ファイルを移動した後、データを更新/更新する必要があります。処理しないと、ファイルが存在しない場合にアプリケーションがクラッシュする可能性があります。これが誰かに役立つことを願っていますこれについて確信がありませんでした。

于 2012-12-24T01:26:53.053 に答える