根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用

Posted

技术标签:

【中文标题】根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用【英文标题】:Save data from UIPickerView in NSUserDefaults based on user selection and call it in another ViewController Objective-C 【发布时间】:2021-05-24 11:17:10 【问题描述】:

这是我的问题。 在一个 ViewController 中有两个 PickerView,它们的数据取自服务器并显示在 pickerView 的行上。

我想要做的是将用户选择的行上显示的数据(在本例中是一个 int)保存在 NSUserDefaults 中,并在函数内的另一个 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 中。这可以是正确的方法吗?

【问题讨论】:

【参考方案1】:

更好的解决方案是 -

- (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
    

【讨论】:

以上是关于根据用户选择将 UIPickerView 中的数据保存在 NSUserDefaults 中,并在另一个 ViewController Objective-C 中调用的主要内容,如果未能解决你的问题,请参考以下文章

根据匹配来自 coredata 的字符串选择 UIPickerview

UIPickerView 作为按钮操作并根据选择器的选定值设置文本字段的文本

数组中的数据未显示在第二个 UIPickerView 中

UIPickerview 多个文本字段 Xcode

无法根据来自 UIPickerView 的选择器更新 UITableView 数据

UIPickerView 行选择