1

アプリ内購入を利用したい。NSUserDefaultsを手伝ってください。

私は持っています:

free = [[NSArray alloc] initWithObjects:@"Beer", @"Ice-Cream", nil];


paid = [[NSArray alloc] initWithObjects:@"Beer", @"Ice-Cream", @"Pizza", @"Hot-dog", @"Candy", nil];

今、ユーザーが私の製品を購入することに成功した場合、私はこのコードを持っています:

  [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isProUpgradePurchased" ];
  [[NSUserDefaults standardUserDefaults] synchronize];

デフォルトとして、私のUITableViewは無料のNSArrayをロードします。NSUserDefaultsを作成し、UITableViewを呼び出して有料のNSArraryをロードするにはどうすればよいですか。前もって感謝します

4

2 に答える 2

1
NSArray *dataArr;

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isProUpgradePurchased"]) {
    // load paid array
    dataArr = paid;
} else {
    // load free array
    dataArr = free;
}

[tableView reloadData];

テーブルビューのデータソースメソッドを実装するときに使用dataArrします。無料の配列と有料の配列を直接使用しないでください。

于 2012-09-04T04:47:35.163 に答える
1

tableViewデリゲートメソッドでこれを行います:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
  if([[NSUserDefaults standardUserDefaults] ObjectforKey:@"isProUpgradePurchased"])
  {
     return [paid count];
  }
  else
  {
     return [free count];
  }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
   ..............
   if([[NSUserDefaults standardUserDefaults] ObjectforKey:@"isProUpgradePurchased"])
  {
     cell.titleLabel.text = [paid ObjectAtIndex:indexPath.row];
  }
  else
  {
     cell.titleLabel.text = [free ObjectAtIndex:indexPath.row];
  }
}
于 2012-09-04T04:50:25.590 に答える