2011-07-20 27 views
5

Tôi có nhiều tệp jpeg + png + html để thêm vào ứng dụng của mình và tất nhiên khi tôi "xây dựng" tất cả các tệp tài nguyên của tôi được thêm/đưa vào thư mục myBundle của myApp.xcode: làm thế nào để lưu tệp trong thư mục "tài liệu" trong giai đoạn biên dịch/xây dựng (không thông qua "mã chạy")?

Tôi muốn để có thể sửa đổi thông qua mã, trong thời gian chạy, một số tài nguyên của tôi, nhưng:

1), chúng tôi không thể "viết" các tập tin thông qua mã trong thời gian chạy trong mainBundle

2) chúng ta có thể làm điều đó chỉ trong "tài liệu" thư mục (hoặc tạm thời, hoặc ...)

3) chúng ta có thể sao chép tập tin trong "Tài liệu" thư mục chỉ qua mã trong thời gian chạy

4) chúng tôi không thể xóa các tệp mainBundle sau khi đối chiếu chúng trong "Tài liệu"

nhưng điều đó có nghĩa là chúng tôi sẽ tăng gấp đôi kích thước ứng dụng của chúng tôi và trong các ứng dụng lớn (đó là trường hợp của tôi), điều này không có ý nghĩa, chúng tôi sẽ có rất nhiều tệp lớn không bao giờ được sử dụng lại trong mainBundle ..

vì vậy tôi tự hỏi nếu có một vấn đề xung quanh cho vấn đề này (nó chỉ là tôi nghĩ đó là một ý nghĩa không?) Để thêm tệp trực tiếp trong thư mục "Tài liệu" trong giai đoạn "xây dựng" qua xCode, hoặc các giải pháp tương tự khác ...

ps

ai có thể tải tất cả các tập tin lần đầu tiên một người dùng sử dụng ứng dụng của tôi thông qua máy chủ/internet trực tiếp trong "Tài liệu" thư mục, vì vậy ứng dụng của tôi sẽ không được nặng để tải xuống qua iTunesStore, nhưng tất nhiên điều này sẽ nhận được rất nhiều thời gian lần đầu tiên cho người dùng cuối, và nó có thể không được chấp nhận, tất nhiên ...

Trả lời

4

Vâng, bạn không thể, vì thư mục tài liệu được tạo ra cài đặt ứng dụng. Không có cách nào để làm những gì bạn muốn trong thời gian biên dịch. Bạn không thể làm điều đó khi cài đặt.

Vì bạn cần tệp bạn phải đưa chúng vào gói của mình, tôi thậm chí đã bao gồm cơ sở dữ liệu sqlite 10MB mà tôi sao chép vào tài liệu trực tiếp khi khởi chạy lần đầu tiên. Đó chỉ là cách nó được.

+0

vâng, tôi biết đó là cách ...nhưng biết rằng đĩa iPhone/iPod của chúng tôi không quá lớn và không gian HD rất quan trọng khi người dùng chọn tải xuống ứng dụng của chúng tôi và xem xét việc Apple cho phép cách "đàn hồi" cho vấn đề này rất dễ dàng ... tốt. .. tôi chỉ thấy tình huống này một chút "ngớ ngẩn" ... – meronix

2

Không làm việc cho các ứng dụng

Sao chép tập tin vào thư mục tài liệu trong thời gian biên dịch đòi hỏi bạn phải biết rằng thư mục trước. Bạn thường không thể biết điều này vì thư mục tài liệu có thể chưa được tạo trước khi ứng dụng của bạn được cài đặt.

có thể làm việc cho đơn vị xét nghiệm trên mô phỏng

Tuy nhiên, vị trí của thư mục tài liệu phụ thuộc vào nền tảng mục tiêu và các loại bó bạn đang xây dựng. Đối với đơn vị xét nghiệm dựa trên SenTestingKit thực thi trên trình giả lập iOS, bạn có thể xác định thư mục tài liệu tại thời gian biên dịch bằng cách chỉ làm điều này bên trong một "Run Script" xây dựng giai đoạn:

~/Library/Application Support/iPhone\ Simulator/$IPHONEOS_DEPLOYMENT_TARGET/Documents 

Lưu ý rằng điều này thực sự chỉ làm việc cho đơn vị kiểm tra các gói không được thực thi trong thư mục ứng dụng chuyên dụng và do đó truy cập thư mục tài liệu "được chia sẻ" trên nền tảng mô phỏng.

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