2011-01-01 9 views
18

CCTMXLayerからCGPointsの束がありますNSUserDefaultsに保存したいのですが、エレガントな方法ではないようです。NSUserDefaultsを使用してCGPointのリストを保存します

元々、いくつかのNSValues(valueWithCGPoint)を含む値のNSMutableSetを使ってNSDictionaryを保存することを望んでいました。 NSMutableSetまたはNSValueのどちらもNSUserDefaultsによってサポートされていないことがわかります。

この時点では、CGPointのxの値を文字列として保存し、必要に応じて前後に変換することを検討しています。

+0

NSKeyedArchiverをファイルに使用しているだけで構いませんか? (NSUserDefaultsを使用するのではなく) –

答えて

46

NSStringFromCGPointCGPointFromStringのペアがあります。これらを使用して、シリアライゼーションのポイントを表す文字列の配列を生成し、終了したら変換し直すことができます。

+0

注目に値する!私はこれらの機能が存在するかどうかは分かりませんでした。常に目標の新しい側面を見つけ出す - c。 –

1

NSValueのオブジェクトに囲みます。彼らがそこにいると、NSValuesをディスクに書き込むことができます(<NSCoding>に準拠しているため)。NSUserDefaultsなどに入れてください。

+0

これはまさに私の問題です。私はNSArray(またはNSSet ... NSUserDefaultsを使用してNSValuesの両方を試してみましたが、エラーを受け取り続けます:[NSUserDefaults setObject:forKey:]:プロパティ以外の値を挿入しようとしました –

+0

プロパティリストは使用しません。 NSValueオブジェクトはplistに書き込むことはできません。 –

+0

ああ、すみません、ごめんなさい。はい、 'NSKeyedArchiver'を使用して' NSValues'を 'NSDatas'(あるいは' NSArray'を 'NSData')に変換する必要があります –

関連する問題