2012-07-12 19 views
8

私はユーザーが指で画面上に描画できるアプリケーションに取り組んでいます。私はこれにUIBezierPathを使用しています。私は複数のBezierPathオブジェクトを含むNSArrayであるこのデータを永続化する必要があります。これについて最善の方法は何ですか? coredataに格納し、NSDataを使用してファイルに格納しますか?とても感謝しております。コアデータを持つUIBezierPath永続性

答えて

12

複数のオブジェクトを保存する必要がありますか?あなたはいくつかのフィルタや注文に基づいてそれらを取得する必要がありますか?コアデータを使用して、データのパッキング/アンパックの作業量を節約することをお勧めします。実際にファイルに格納する理由はありません。

編集:

他の答えが言ったように、あなただけのNSDataにそれをアーカイブします。あなたがそれをアーカイブするために、このような何かを行うことができますのでUIBezierPathクラスはNSCodingプロトコルに準拠:

NSData *bezierData = [NSKeyedArchiver archivedDataWithRootObject:bezierPath]; 

あなたはコアデータにそのNSDataオブジェクトを永続化することができます。 NSDataのに

UIBezierPath *bezierPath = [NSKeyedUnarchiver unarchiveObjectWithData:bezierData]; 
+0

どのようにあなたはcoredataにUIBesierPathを保持しますか? –

+0

私の答えを更新します。 – Dima

1

アーカイブUIBezierPath、およびCoreDataを入力したNSDataの属性として保存:アーカイブを復号化するために

は、我々はbezierData NSDataオブジェクトを持っていると仮定すると、あなたのような何かを行うことができます。変換可能な属性にすると、より簡単なAPIを使用できます。

特に、既にアーカイブをサポートしているクラスの場合はかなり簡単です。

詳細については、このドキュメントを参照してください。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html