分配给' readonly'返回结果

时间:2014-08-23 14:33:53

标签: ios objective-c

我正在尝试重置此声明的状态:

[[IAPManager sharedInstance]isProductPurchased:kInAppItem] = FALSE;

但是,我收到的错误是“分配给'readonly'不允许使用Objective-C消息的返回结果”。如何重置此声明的状态?

在IAPManager.m

-(BOOL)isProductPurchased:(NSString *)productIdentifier
 {    
   return [_purchasedProducts containsObject:productIdentifier];
 }

2 个答案:

答案 0 :(得分:1)

您的左侧是一个返回BOOL的方法调用,它不是对属性本身的引用,因此您无法分配值。

您需要参考IAPPurchase的代码,但如果this library,则无法重置产品的购买状态。

您可以删除应用程序或删除库用于存储购买数据的plist(顺便说一句,这不是一种非常安全的方式来记录应用内购买)

答案 1 :(得分:1)

您无法为Objective-C中方法的返回值赋值。您可能会对语法

感到困惑
myObject.myProperty = myValue;

这会将myProperty的值设置为myValue,但这样做基本上会调用此方法:

[myObject setMyProperty:myValue];

无论哪种方式,代码的左侧都将作为返回值处理,而不是属性。因此,您无法指定它。

如果存在setProductPurchased:setIsProductPurchased:等方法,则需要像第二个示例那样调用它。否则,没有办法设置属性,因此您可能必须直接设置实例变量。