Box.Net iOS SDK Перемещение файлов и папок

В настоящее время я разрабатываю приложение для iOS и внедряю Box.Net SDK. У меня все работает, кроме возможности перемещать файлы, что не является родной функцией SDK. Я пытаюсь пройти через это.

Если вы знакомы со структурой Box.Net, каждый файл/папка имеет собственный идентификационный номер и идентификатор своего родителя. Насколько я понимаю, если я хочу переместить файл, я должен изменить родительский идентификационный номер в файле, который укажет его на новое место. Я не могу заставить его работать должным образом. Мое приложение, кажется, продолжает падать.

Это то, что я до сих пор, обобщенно.

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

Я также пробовал это.

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

Переменная boxObject — это файл, который я хочу переместить. Я устанавливаю его родительский идентификатор равным 0, который должен быть корневой папкой. Однако мое приложение падает, когда я пытаюсь переназначить родительский идентификатор для файла. Любые идеи о том, как успешно перемещать файлы/папки? Любая помощь высоко ценится! Заранее спасибо!


person kp_    schedule 22.12.2012    source источник


Ответы (1)


Хорошо. Я полагаю, что не было возможности исправить это самостоятельно с помощью 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, вам, скорее всего, потребуется обновить/обновить данные после перемещения файлов. Если не обработать, ваше приложение может аварийно завершить работу, если файл не существует. Надеюсь, это поможет кому-то, кто не был уверен в этом.

person kp_    schedule 24.12.2012