2013-12-12 3 views
1

백엔드에서 PNG 그림 파일로 저장된 콘텐츠 항목 (사용자의 그림 BLOB 항목)을 삭제하려고하면 이상한 문제가 발생합니다. 데이터 베이스.Quickblox : 콘텐츠 항목 (그림 파일/BLOB)을 삭제할 때의 문제

삭제는 오류없이 진행되지만 "422 Unprocessable Entity"를 제공합니다. 이것은 무엇을 의미 하는가? Quickblox 관리 패널에서 내용 항목의 상태가 확인되고 준비가 된 것 같습니다.

[QBContent deleteBlobWithID:blobID delegate:self]; 

QB 로그 :

Performing async request: 
DELETE http://api.quickblox.com/blobs/91049.xml 
headers:{ 
    "QB-SDK" = "iOS 1.8"; 
    "Qb-Token" = b9e3d1cc708c8444070544df8c642ad194509e67; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
} 
parameters: 
2013-12-12 14:33:52.328 QBTestApp[21095:6b73] Request finished, response: 
headers:{ 
    "Access-Control-Allow-Origin" = "*"; 
    "Cache-Control" = "no-cache"; 
    Connection = "keep-alive"; 
    "Content-Length" = 49; 
    "Content-Type" = "application/xml; charset=utf-8"; 
    Date = "Thu, 12 Dec 2013 13:33:58 GMT"; 
    "QB-Token-ExpirationDate" = "2013-12-12 15:32:22 UTC"; 
    "QuickBlox-REST-API-Version" = "0.1.1"; 
    Server = "nginx/1.0.15"; 
    Status = "422 Unprocessable Entity"; 
    "X-Rack-Cache" = "invalidate, pass"; 
    "X-Request-Id" = 3f235134e5aa0bd012ef78e54cddc164; 
    "X-Runtime" = "0.039680"; 
    "X-UA-Compatible" = "IE=Edge,chrome=1"; 
} 
body: 
error: 
<?xml version="1.0" encoding="UTF-8"?> 
<errors/> 

나는 다음과 같은 API 호출로 개체를 삭제하려고

[QBContent TUploadFile:imageData fileName:@"profile.png" contentType:@"image/png" isPublic:YES delegate:self]; 

을 :

나는 다음과 같은 API 호출로 컨텐츠를 업로드 내가 여기서 잘못하고있는 아이디어가 있습니까? 미리 감사드립니다. :-)

+1

업데이트 14/12/2013 : 이것에 대한 작은 testsnippet을 만들었으며 이전 Blob 파일을 성공적으로 삭제할 수 있지만 내가 작성하여 사용자에게 첨부 한 최신 Blob 파일은 삭제할 수없는 것으로 보입니다. 이것은 ** blob 항목이 어떤 사용자에게 _user.blobID_ 필드에 연결되어있을 때 ** 잠겨 있는지 여부를 내 마음에 알리는 것입니까? 그래서이 문제에 대한 올바른 해결책은 _user.blobID_ 필드에서 특정 BLOB 연결을 제거한 다음 해당 사용자 객체를 업데이트하고 이것이 완료되면 BLOB 콘텐츠 파일을 제거 할 수 있습니다. 월요일에 확인하십시오) –

답변

2

존재하지 않는 blob 파일을 삭제하려는 느낌. 업로드 및 생성 프로세스가 완료된 후 (성공적 결과와 함께 completedWithResult :를 호출하여) blob 파일을 삭제하려고하는지 확인하십시오.

코드에서 TUploadFile : 및 deleteBlobWithID : 메서드 호출 순서를 볼 수 있다면 더 빨리 도와 줄 수 있습니다.

+0

귀하의 의견에 대해 @glebus에게 감사드립니다. 불행히도, 나는 전화의 순서를 확인하고 전화 사이에 충분한 시간이 있음을 확신 할 수 있습니다. QB 대시 보드에서 파일이 클라우드에 있는지 확인할 수 있으며 대시 보드를 통해 이미지 파일을 볼 수 있습니다. 또한 프로그래밍 방식으로 파일을 다운로드하고 파일의 내용을 UIImage에 넣을 수 있습니다.이 기능을 다시 확인하고 내일이 기능을 확인할 수 있도록 작은 코드 스 니펫을 만들 것입니다. –

+0

마지막 업데이트 정보. 동의합니다 -이 동작은 완전히 명확하지 않습니다. iOS의 수동 메모리 관리와 비슷합니다. 파일을 업로드 할 때 클래스 내용의 객체를 만들고 참조 횟수를 1 씩 늘립니다.이 객체의 blobID를 user.blob_id로 설정하면 객체 내용을 유지하는 것이 중요합니다. release 메소드라고하는 오브젝트 내용을 제거하는 동안 참조 카운트가 0이 아닌 경우 오류가 리턴됩니다. http://quickblox.com/developers/Content#Delete_file – glebus

+0

blobID를 user.blob_id로 설정하는 문서에이 Blob의 참조 카운트를 증가시켜야한다고 생각합니다. 그리고 블롭을 삭제하려고 할 때 반환되는 오류 설명을 작성하면 더 많은 정보가 제공됩니다. – glebus

관련 문제