我正在尝试重置此声明的状态:
[[IAPManager sharedInstance]isProductPurchased:kInAppItem] = FALSE;
但是,我收到的错误是“分配给'readonly'不允许使用Objective-C消息的返回结果”。如何重置此声明的状态?
在IAPManager.m
中-(BOOL)isProductPurchased:(NSString *)productIdentifier
{
return [_purchasedProducts containsObject:productIdentifier];
}
答案 0 :(得分:1)
您的左侧是一个返回BOOL的方法调用,它不是对属性本身的引用,因此您无法分配值。
您需要参考IAPPurchase
的代码,但如果this library,则无法重置产品的购买状态。
您可以删除应用程序或删除库用于存储购买数据的plist(顺便说一句,这不是一种非常安全的方式来记录应用内购买)
答案 1 :(得分:1)
您无法为Objective-C中方法的返回值赋值。您可能会对语法
感到困惑myObject.myProperty = myValue;
这会将myProperty的值设置为myValue,但这样做基本上会调用此方法:
[myObject setMyProperty:myValue];
无论哪种方式,代码的左侧都将作为返回值处理,而不是属性。因此,您无法指定它。
如果存在setProductPurchased:
或setIsProductPurchased:
等方法,则需要像第二个示例那样调用它。否则,没有办法设置属性,因此您可能必须直接设置实例变量。