NSDictionary - UI标签错误

时间:2014-12-30 15:42:35

标签: ios xcode uilabel nsdictionary

我有这两个成员:

int counter;
IBOutlet UILabel *count;

我按照以下方式使用它们:

- (void)saveCount {
    NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"saveCount"] ;
    NSMutableDictionary *mDict = [dict mutableCopy] ;
    [mDict setObject:@(count) forKey:@(itemIndex)] ;

    [[NSUserDefaults standardUserDefaults] setObject:mDict forKey:@"saveCount"] ;
    [[NSUserDefaults standardUserDefaults] synchronize] ;
}

这一行:

[mDict setObject:@(count) forKey:@(itemIndex)] ;

给我一​​个错误 - "非法类型' UILabel'在盒装表达中使用"。 我做错了什么?

3 个答案:

答案 0 :(得分:1)

您正在尝试将Label本身存储在用户默认值中,而不是标签的值。您可以使用NSString存储标签的count.text值。您还可以使用count.text.doubleValuecount.text.integerValue存储数字值。

您要保存的密钥也必须是NSString。基于itemIndex变量的简单转换可以这样完成:

[mDict setObject:count.text forKey:@(itemIndex).stringValue];

编辑:更改为对dasblinkenlight的评论帐号

答案 1 :(得分:0)

根据代码,可以推断,在一些" save"动作,您希望将值保存在" UILabel"。

我看到:   - 当我们有兴趣保存" UILabel"内容,那么最好采取" UILabel-text"对某些钥匙存放它。就像这样;

  

[mDict setObject:@(count.text)forKey:@(itemIndex)];

是否有任何具体原因,使用" UILabel"对象作为字典中的值?

答案 2 :(得分:0)

NSUserDefaults无法存储“非属性”对象,这意味着您无法在字典中存储类似UILabel(UIView)或类似UIImage的内容并将其保存为默认值。 NSUserDefaults可以存储像NSData,NSString,NSNumber等“属性”...所以你应该把标签的文本放在NSUserDefaults中