2012-12-22 3 views
0

현재 iOS 응용 프로그램을 개발 중이며 Box.Net SDK를 구현 중입니다. 파일을 옮길 수있는 기능을 제외하고는 SDK의 기본 기능이 아닌 모든 작업을 수행했습니다. 나는 그것을 통해 자신의 길을 트위스트하려고합니다.Box.Net iOS 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를 다시 할당하려고하면 응용 프로그램이 충돌합니다. 성공적으로 파일/폴더를 이동하는 방법에 대한 아이디어가 있습니까? 어떤 도움을 많이 주시면 감사하겠습니다! 미리 감사드립니다!

답변

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

그냥 당신이 상자 SDK를 처음 사용하는 경우 알림, 당신은 가장 가능성/업데이트 파일을 이동 한 후 데이터를 새로 고칠 필요가있을 것이다. 처리되지 않으면 파일이 없으면 응용 프로그램이 중단 될 수 있습니다. 희망이 누구에게 도움이 이것에 대해 잘 모르겠습니다.