1

NSValues の配列をアーカイブするにはどうすればよいですか? これを行うには、どのような変換を行う必要がありますか? そのままではアーカイブされません。

コード:

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver 
archivedDataWithRootObject:[[NSArray alloc] initWithArray:drawingsArray]] 
forKey:@"NSValuesArray"];

エラー:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedArchiver encodeValueOfObjCType:at:]: this archiver cannot encode structs'

配列データ:

drawingsArray (
    (
    NSPoint: {439, 280},
    NSPoint: {439, 280},
    NSPoint: {439, 287},
    NSPoint: {438.62, 290.104},
    NSPoint: {439, 293}
)

)

4

1 に答える 1

1

を使用する必要はありませんNSKeyedArchiver。代わりに、と言って[[NSUserDefaults standardUserDefaults] setObject:valueArray forKey:@"valueArray"]ください。アーカイブは自動的に行われます。それが機能するかどうかを確認します。

編集:あなたの特定の問題はを使用していると思いますarchivedDataWithRootObject:NSArrayに準拠しているため、これを使用する必要はありませんNSCoder。子オブジェクトも自動的にアーカイブされます。

于 2010-04-24T22:04:39.413 に答える