Box.Net iOS SDK移动文件和文件夹

时间:2012-12-22 23:45:44

标签: ios sdk box-api

我目前正在开发iOS应用程序并正在实施Box.Net SDK。我已经完成了所有工作,除了能够移动文件,这不是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时,我的应用程序崩溃了。有关如何成功移动文件/文件夹的任何想法?任何帮助深表感谢!提前致谢!

1 个答案:

答案 0 :(得分: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,则移动文件后很可能需要更新/刷新数据。如果不处理,如果文件不存在,您的应用程序可能会崩溃。希望这有助于任何人都不确定这一点。