Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Box.Net iOS SDK移动文件和文件夹_Ios_Sdk_Box Api - Fatal编程技术网

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

Box.Net iOS SDK移动文件和文件夹,ios,sdk,box-api,Ios,Sdk,Box Api,我目前正在开发一个iOS应用程序,并正在实现Box.NETSDK。除了移动文件的能力之外,我已经让一切都正常工作了,这不是SDK的固有特性。我正试图扭转我的方式通过它 如果您熟悉Box.Net的结构,那么每个文件/文件夹都有一个自己的ID号,以及一个父文件/文件夹的ID号。根据我的理解,如果我想移动一个文件,我应该更改文件上的父ID号,它将指向新的位置。但我似乎无法让它正常工作。我的应用程序似乎一直在崩溃 这就是我到目前为止所做的,概括的 BoxObject *boxObject = [[[Bo

我目前正在开发一个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变量是我要移动的文件。我正在将其父ID设置为0,这应该是根文件夹。但是,当我尝试重新分配文件的父ID时,我的应用程序崩溃。关于如何成功移动文件/文件夹有什么想法吗?非常感谢您的帮助!提前谢谢

好的。我想没有办法用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的新手,您很可能需要在移动文件后更新/刷新数据。如果不处理,如果文件不存在,应用程序可能会崩溃。希望这对任何对此不确定的人都有帮助

- (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];
}