2013-07-31 40 views
0

我正在使用以下命令來初始化viewDidLoad中的bundle對象。iOS:NSBundle對象在刪除並重新創建文件夾後變爲無效

documentBundle = [[NSBundle alloc] initWithPath:path]; 

其中路徑如下所示;

/Users/..../Library/Application Support/iPhone Simulator/6.1/Applications/B69B8A03-C029-4DF5-89E0-1429E73E840F/Documents/Downloads/documents.bundle 

在運行應用程序時,我需要更新documents.bundle並刪除舊的。所以我刪除它並從網上下載最新的一個。我已確認捆綁對象指向同一個文件夾,但在替換現有文件夾後無法獲取該捆綁包內的內容。如果我重新啓動應用程序,我會收到最新內容我不確定這裏發生了什麼事。有人能指出什麼可能是錯的嗎?

以下返回無替換包之後的路徑!我可以從終端看到所需的文件!

NSString *path = [documentBundle pathForResource:filename ofType:extension]; 

我還試圖更換束後重新初始化包對象,但仍它指向同一存儲器地址(使用%P印刷的),並且不返回從新的束的任何內容。

我在設備和模擬器上都得到了相同的結果。

回答

0

看來NSBundle在實例化對象時會記住文件系統。之後,它無法識別添加到該文件夾​​的任何新文件!如果刪除文件夾並使用相同的名稱重新創建新文件夾,則無法識別該文件夾。我試過NSBundle總是指向Documents目錄,並使用[pathForResource:filename ofType:extension inDirectory:directory],但在替換目錄時也不起作用。總之,如果你的文件系統使用相同的名字是動態的,那麼永遠不要處理NSBundle!

我發現瞭解決方案,爲每次新下載創建當前時間戳文件夾並刪除舊文件夾,然後重置NSBundle對象。現在它工作並創建正確的道路,因爲它實際上並不存在!閱讀Apple documents on NSBundle瞭解更多詳情。

相關問題