根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用它
Save data from UIPickerView in NSUserDefaults based on user selection and call it in another ViewController Objective-C
这是我的问题。
在一个 ViewController 中有两个 PickerView,它们从服务器获取数据并显示在 pickerView 的行上。
我想做的是将用户选择的行上显示的数据保存在 NSUserDefaults 中(在本例中是一个 int),并在函数内的另一个 ViewController 中使用它。
现在我是这样保存的:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1) {
switch (row) {
// Select a merchant and save data in UserDefaults and call it back when I send the message in SendMsgToOperatorViewController
case 1:
break;
case 2:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[0].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"");
case 3:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[1].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
default:
break;
}
} else if (pickerView.tag == 2) {
// code
}
}
我想根据用户选择的行将数据保存在 NSUserDefaults 中。这是正确的做法吗?
更好的解决方案是 -
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1) && row > 1 {
// Skipping first 2 rows since qustion also skips it
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[row-2].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else if (pickerView.tag == 2) {
// code
}
}
这是我的问题。 在一个 ViewController 中有两个 PickerView,它们从服务器获取数据并显示在 pickerView 的行上。
我想做的是将用户选择的行上显示的数据保存在 NSUserDefaults 中(在本例中是一个 int),并在函数内的另一个 ViewController 中使用它。
现在我是这样保存的:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1) {
switch (row) {
// Select a merchant and save data in UserDefaults and call it back when I send the message in SendMsgToOperatorViewController
case 1:
break;
case 2:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[0].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"");
case 3:
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[1].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
default:
break;
}
} else if (pickerView.tag == 2) {
// code
}
}
我想根据用户选择的行将数据保存在 NSUserDefaults 中。这是正确的做法吗?
更好的解决方案是 -
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSMutableArray<Wallet *> *userWallets = [DB_SINGLETON getAllWallets];
if (pickerView.tag == 1) && row > 1 {
// Skipping first 2 rows since qustion also skips it
[[NSUserDefaults standardUserDefaults] setInteger:userWallets[row-2].walletid forKey:@"merchantSelected"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else if (pickerView.tag == 2) {
// code
}
}