4

NSKeyedArchiverクラスでアーカイブしてSKProductオブジェクトを保存しようとしましたが、-[SKProduct encodeWithCoder:]:認識されないセレクターがインスタンスに送信されたというエラーが生成されます。

+ (void)saveProduct:(SKProduct *)product
{
     NSData *data = [NSKeyedArchiver archivedDataWithRootObject:product];
    [[NSUserDefaults standardUserDefaults] setValue:data forKey:PRODUCT];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

SKProductのインスタンスを保存する方法はありますか?

4

1 に答える 1

3

SKProductクラスはNSCodingプロトコルに準拠する必要があります。

つまり、SKProductクラスでこれらの2つのメソッドに入力する必要があります。

  • (void)encodeWithCoder:(NSCoder *)aCoder;
  • (id)initWithCoder:(NSCoder *)aDecoder;

これにより、SKProductクラスが取得され、シリアル化および非シリアル化できるように分解されます。

于 2013-01-06T02:55:21.423 に答える