我想看看如果用户通过检索每个产品标识值NSUserDefaults的进行购买。 我保存的价值,当产品被购买,它是得到正确设置。
该键值对正确显示调用这个时候:
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
由于这样的:
"com.COMPANY.PRODUCTIDENTIFIER" = 1;
但是,当我尝试实际验证特定键值它总是返回null:
for (NSString * productIdentifier in _productIdentifiers) {
NSLog(@"ProductIdentifier: %@",productIdentifier);
NSLog(@"Defaults Value: %@",[[NSUserDefaults standardUserDefaults] valueForKey:productIdentifier]);
NSLog(@"Defaults Bool: %d",[[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier]);
NSLog(@"Defaults Object: %@",[[NSUserDefaults standardUserDefaults] objectForKey:productIdentifier]);
BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier];
if (productPurchased) {
[_purchasedProductIdentifiers addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
} else {
NSLog(@"Not purchased: %@", productIdentifier);
}
}
结果如下:
2013-03-10 17:45:13.609 COMPANY[1140:907] ProductIdentifier: com.COMPANY.PRODUCTIDENTIFIER
2013-03-10 17:45:13.611 COMPANY[1140:907] Defaults Value: (null)
2013-03-10 17:45:13.612 COMPANY[1140:907] Defaults Bool: 0
2013-03-10 17:45:13.611 COMPANY[1140:907] Defaults Object: (null)
注-上面的方法都被称为在该顺序的相同的方法,所以它不与由于值是通过“dictionaryRepresentation”方法正确地示出的应用程序不加载的缺省值还或类似的东西的问题。 此外,公司和产品标识已更换为隐私。 有在真正的应用程序没有错别字所以这不是问题。
UPDATE
好了,所以这是有趣的。 如果我使用一个静态的字符串作为键,返回正确的值。 但使用“产品识别”(即的NSString)不,即使登录了“产品识别”它是完全一样的串...任何想法?
码:
for (NSString *productIdentifier in _productIdentifiers) {
NSLog(@"ProductIdentifier: %@",productIdentifier);
NSLog(@"Defaults Value: %@",[[NSUserDefaults standardUserDefaults] valueForKey:productIdentifier]);
NSLog(@"Defaults Bool: %d",[[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier]);
NSLog(@"Defaults Object: %@",[[NSUserDefaults standardUserDefaults] objectForKey:productIdentifier]);
NSLog(@"Static Key: %d",[[NSUserDefaults standardUserDefaults] boolForKey:@"com.COMPANY.PRODUCTIDENTIFIER"]);
BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier];
if (productPurchased) {
[_purchasedProductIdentifiers addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
} else {
NSLog(@"Not purchased: %@", productIdentifier);
}
}
结果:
2013-03-10 17:45:13.609 COMPANY[1140:907] ProductIdentifier: com.COMPANY.PRODUCTIDENTIFIER
2013-03-10 17:45:13.611 COMPANY[1140:907] Defaults Value: (null)
2013-03-10 17:45:13.612 COMPANY[1140:907] Defaults Bool: 0
2013-03-10 17:45:13.611 COMPANY[1140:907] Defaults Object: (null)
2013-03-10 17:45:13.611 COMPANY[1140:907] Static Key: 1