gpt4 book ai didi

iOS:保存双选择器的设置(数据持久性)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:26 25 4
gpt4 key购买 nike

所以我有一个双选择器,用户可以将每个轮子设置为他们想要的,然后按下一个按钮来显示他们的选择。易于清洁和简单,但我想存储该数据以备后用,以便在他们关闭应用程序并再次打开它后它不会消失。现在,我知道如何使用 datePicker,但不知道如何使用 doublePicker。所以我的问题是如何通过将 datePickers 信息保存和检索到 doublePicker 来调整我的代码?

这是我的日期选择器代码:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// Pulling the date out of my picker
NSDate *selectedDate = [self.datePicker date];

[defaults setObject:selectedDate forKey:@"DatePickerViewController.selectedDate"];

然后再次检索它:

    - (void)viewDidLoad
{
[super viewDidLoad];

// Get the date. I'm going to use a little shorthand instead of creating
// a variable for the instance of `NSUserDefaults`.
NSDate *storedDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"DatePickerViewController.selectedDate"];

// Setting the date on the date picker. I'm passing `NO` to `animated:`
// because I'm performing this before the view is on screen, but after
// it has been loaded.
[self.datePicker setDate:storedDate animated:NO];
}

任何帮助将不胜感激,thx :)

最佳答案

在你的UIPickerViewDelegate中:

        - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setInteger:row forKey:[NSString stringWithFormat:@"DoublePickerViewController.%i", component]];
}

获取数据:

        for (int i = 0; i < doublePicker.numberOfComponents; i++) {
NSInteger *storedInteger = [[NSUserDefaults standardUserDefaults] integerForKey:[NSString stringWithFormat:@"DoublePickerViewController.%i", i];
[doublePicker selectRow:storedInteger inComponent:i animated:NO];
}

用于存储多个值:

在你的UIPickerViewDelegate中:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSArray *oldArray = [defaults arrayForKey:[NSString stringWithFormat:@"DoublePickerViewController.%i", component]];

//Make a mutable version so we can change it
NSMutableArray *newArray = [oldArray mutableCopy];
if (!newArray) {
newArray = [NSMutableArray array];
}
//Add The Latest Row To The end of the array. We wrap it in an NSNumber so it can be in an array
[newArray addObject:[NSNumber numberWithInteger:row]];

//If you want to have a limit on the amount of values that can be stored then use this
int maxValues = 5;
if (newArray.count >= maxValues) {
//Remove the oldest object
[newArray removeObjectAtIndex:0];
}
[defaults setObject:newArray forKey:[NSString stringWithFormat:@"DoublePickerViewController.%i", component]];
}

获取数据:

        for (int i = 0; i < doublePicker.numberOfComponents; i++) {
NSArray *storedIntegers = [[NSUserDefaults standardUserDefaults] arrayForKey: [NSString stringWithFormat:@"DoublePickerViewController.%i", i];
//I don't know what values you want, but to get an int out of the array:
//int integer = [(NSNumber *)[storedIntegers objectAtIndex:0] intValue];
//And to set the row for a component:
//[doublePicker selectRow:storedInteger inComponent:i animated:NO];
}

关于iOS:保存双选择器的设置(数据持久性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18112748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com