【问题标题】:How to store UISegmentedControle state in NSUserdefaults如何在 NSUserdefaults 中存储 UISegmentedControl 状态
【发布时间】:2010-04-13 14:15:39
【问题描述】:

问题是当 de selectedSegmentIndex 未选中时:“UISegmentedControlNoSegment”别名“-1”。

其他状态(0、1、2 等),我可以存储为整数并使用

carTypeSegmentedControl.selectedSegmentIndex = [defaults integerForKey:@"typeOfCar"];

但是 -1 不是 NSInteger。

我还尝试从 NSUserdefaults 中删除 Integer,但请求会返回“0”,这是不可接受的。

那么,还有其他简单的方法吗?

【问题讨论】:

    标签: iphone nsuserdefaults uisegmentedcontrol


    【解决方案1】:

    -1 是一个整数,它是一个负整数。您应该能够将其存储在 NSUserDefaults 中。

    【讨论】:

    • 同上。也许 OP 将 NSInteger 与 NSUInteger 混淆了?
    • 如果 -1 作为无符号整数被检索,OP 可能会报告返回 MAX_INT。
    【解决方案2】:

    您需要使用NSNumber,它是常见数值和布尔类型值的对象表示,例如设置:

    [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:-1] forKey:kDefaultCarSegmentedControlState];
    

    检索:

    NSInteger defaultCarSegmentedControlSelectedIndex = [[[NSUserDefaults standardUserDefaults] objectForKey:kDefaultCarSegmentedControlState] intValue];
    

    【讨论】:

      【解决方案3】:

      你是对的 Ben,-1 是一个整数。毕竟它是存储的。我对此做了一个NSLog。愚蠢的我没有尝试过。我没有找到明确的文档。

      所以可能我的问题出在其他地方。

      我想你的答案也有效,亚历克斯。

      感谢您的帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-13
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多