2013-11-14 16 views
5

Cách tiếp cận tốt nhất để sử dụng tính năng chuyển nền để tải nội dung từ thư viện là gì?NSURLSession: tải lên nội dung có chuyển nền

Có vẻ như uploadTaskWithRequest:fromData: không làm việc với NSURLSession tạo ra với backgroundSessionConfiguration vì nó gây ra một ngoại lệ: "Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSGenericException', lý do: 'Tải lên nhiệm vụ trong phiên nền phải từ một tập tin". Đánh giá từ việc chuyển giao nền mô tả ngoại lệ cũng không hoạt động với các tác vụ tải lên được truyền trực tuyến.

Đủ công bằng. uploadTaskWithRequest:fromFile: là điều đầu tiên xuất hiện khi bạn nghĩ đến việc tải lên dữ liệu mà bạn đã có trên đĩa. Nhưng tham khảo lớp NSURLSession cho chúng ta biết rằng phương thức này chỉ làm việc với các tệp url, nhưng khi bạn nhận được đường dẫn url của nội dung, nó bắt đầu từ "asset-library: // asset/..." và cung cấp đường dẫn này cũng không hoạt động.

Vì vậy, có vẻ như tùy chọn duy nhất còn lại là sao chép tệp từ thư viện nội dung vào thư mục tạm thời và cung cấp url tệp của nó tới uploadTaskWithRequest:fromFile:. Nhưng nó không có ý nghĩa gì bởi vì bạn đã lưu tập tin tài sản trên đĩa của bạn. Tôi có thiếu gì đó không?

Cập nhật:

Nói chuyện với kỹ sư của Apple tại sự kiện Tech Talks và ông khẳng định rằng NSURLSession nền hỗ trợ chỉ nộp url. Vì vậy, thực sự, bạn cần phải sao chép thư viện tài sản vào một thư mục tạm thời, và cung cấp url của nó tập tin để uploadTaskWithRequest:fromFile: để tải lên nó với nền NSURLSession. Hành vi này có thể thay đổi trong tương lai.

Trả lời

2

Họ cũng nói một nơi nào đó trong tài liệu rằng URL tải lên/tải xuống chỉ hỗ trợ sơ đồ http https. Nền chỉ hỗ trợ http/https.
Tôi tin rằng các url thư viện dữ liệu cốt lõi và tài sản mặc dù url hợp lệ về kỹ thuật không thực sự là url và rất có thể không được triển khai bằng cách tạo NSurlprotocol-s tùy chỉnh.

Vì vậy, tôi có khuynh hướng tin rằng bạn nên viết nội dung vào một số tệp và chuyển URL đó đến tệp đó để tải lên tác vụ. Tôi đang làm việc trên một dự án tải lên tài sản là tốt và tôi vừa mới bắt đầu chuyển đổi nó thành nsursession sử dụng phiên nền. Vì vậy, tôi sẽ cố gắng này ra cho bản thân mình sau ngày hôm nay để chứng minh lý thuyết.

+0

Vâng, vâng. Sao chép tập tin về cơ bản là những gì tôi đang làm bây giờ. Làm thế nào là sự tiến bộ của bạn với nsursession? –

+0

Đoán của bạn có vẻ đúng. –

+0

@RobertGeifman Vì vậy, về cơ bản uploadTaskWithRequest: fromData: không hoạt động? – marciokoko

Các vấn đề liên quan