2010-04-22 62 views
0

是否有比使用/ NSKeyedArchive更好的序列化ObjC對象的方法?NSCoding和ostream

我需要通過C++ std:ostream類對象來分發對象,以便放到另一臺計算機上。

對象擁有超過122件各種類型的......爲此要我

[coder encodeObject: (id) forKey: @"blah"]; 

爲所有這些......

有沒有人有一個很好的Perl腳本,將至少把它寫出來?我甚至不知道它包含的對象是否意味着這可能會變成一個巨大的醜陋混亂,因爲我無法更改對象的來源 - 我將不得不繼承&將其添加@interface ...

還是我是愚蠢的? Apple's guide不能幫助我,因爲歸檔到XML不會很好地通過ostream。

有沒有更好的方法來做到這一點?

-S!


[編輯1]
所以我已經看了NSCoding,和我的課包含了通用的NSManagedObjects ......這不符合<NSCoding>。我嘗試過使用面向方面的編程[在這裏] [2] - 但是這會導致運行時的無限遞歸。 (至少這是我所假設的調用堆棧104795調用[id encodeWithCoder:]

另外,我不能只是添加<NSCoding>到我正在加載,因爲它的成員是導入框架的對象,我可以只是添加協議,這就是爲什麼我認爲面向方面的東西會起作用

我最後的(也是可怕的)想法是將我需要的每個類子類化,並在那裏實現協議。一個巨大的障礙,我可以預見的是,如果類包括NSArrays的類沒有暴露在框架中,然後我沉沒

有沒有更好的方式來做到這一點?我覺得是一個設計時決定,現在加入這項功能爲時已晚。

幫助...

PS

這整個反垃圾郵件的事情與限制鏈接吸。我該如何提出聰明的問題!?

[2]: HTTP:/ /davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803

回答

1

使用NSCoding絕對正確的方式走。如果你不想輸入所有與NSCoding有關的樣板(我同意,這是一個痛苦),看看Accessorizer,它可以爲你寫。

+0

我發現[this](http://davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803「面向方面編程的ObjC」)這究竟是什麼我想。由於我實際上無法編輯該類(它位於框架中),因此我不想創建大量令人厭惡的繼承樹,只添加。但是...我將使用Accessorizer。這看起來天上。 – 2010-04-23 15:50:46