在我的應用程序,我與SimpleKML框架緩存自定義類
https://github.com/mapbox/Simple-KML
我有一些大的文件,大約需要5秒來處理這個思想庫的工作。我正在考慮緩存對象的東西像NSData。
我從蘋果閱讀本教程:
但我真的不知道用nscoder的是做到這一點的最好辦法。有人能指引我朝着正確的方向嗎?
在我的應用程序,我與SimpleKML框架緩存自定義類
https://github.com/mapbox/Simple-KML
我有一些大的文件,大約需要5秒來處理這個思想庫的工作。我正在考慮緩存對象的東西像NSData。
我從蘋果閱讀本教程:
但我真的不知道用nscoder的是做到這一點的最好辦法。有人能指引我朝着正確的方向嗎?
您想使用NSKeyedArchiver
和NSKeyedUnarchiver
。
如果你保存對象(以及它作爲屬性的對象及其屬性等)實現NSCoding
協議那麼它的,因爲
NSData *savedData = [NSKeyedArchiver archivedDataWithRootObject:someObject];
[savedData writeToFile:pathToSaveFile atomically:YES];
爲簡單對象歸檔到NSData然後將其保存到磁盤,然後將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤,然後再將其保存到磁盤中。
如果不是,則需要覆蓋initWithCoder:
和encodeWithCoder:
以查找有問題的對象,以使其正確序列化。
我試過了,並保存該對象的作品。但是,它看起來像沒有保存一切。 Nsdata對象的長度是299,非常小。而我不能訪問unarchived對象的方法或屬性。它沒有null cuz當我登錄它我看到:
我讀了這個,我看起來像即時通訊做的一切正確。 https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Articles/archives.html#//apple_ref/doc/uid/20000946-BAJDBJAI – Melvin 2012-02-12 16:04:01
SimpleKML對象不能實現'NSCoding '協議正確。查看我的更新答案,瞭解需要完成的工作。可能值得讓項目做出修改,然後發送拉請求。 – yuji 2012-02-12 16:44:26
考慮使用NSCache和NSPurgeableData [如本文所述](https://developer.apple.com/library/mac/technotes/CachingPurgeableMemory/CachingPurgeableMemory.pdf)。 – Till 2012-02-12 14:05:28
好吧,我實際上正在尋找一些可以保存在某個地方的文件或文件。它看起來很喜歡nscache無法保存,或者它呢? – Melvin 2012-02-12 14:21:31