我有一个允许用户选择行的选择列表。选择一行后,会显示一个复选标记,cell.textLabel.text
值将保存为NSUserDefaults
上的数组。
我遇到麻烦的是,当用户回来从NSUserDefaults(以前的场合)制作accessoryView复选标记时。
以下是当前代码:
if ([[userDefaults objectForKey:@"selectedProducts"]) isEqualTo:cell.textLabel.text] {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
但是,我收到错误是一种无效的方法。任何帮助表示赞赏。感谢
编辑:如果我打印NSLog(@"%@", [userDefaults objectForKey:@"selectedProducts"])
,我会收到以下信息:
2014-08-16 21:26:01.749 Abonos[575:60b] (
"Product 1",
"Product 2",
"Product 3",
"Product 4"
)
答案 0 :(得分:2)
试试这个,你应该枚举每个单元格的所有值
for(uint i=0 ;i<[userDefaults objectForKey:@"selectedProducts”].count ; i++)
{
if([[[userDefaults objectForKey:@"selectedProducts”]objectAtIndex:i] isEqualToString:cell.textLabel.text])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
break;
}
}
答案 1 :(得分:0)
我假设[userDefaults objectForKey:@"selectedProducts"]
返回一个数组。但是,您尝试将返回的数组与NSString
进行比较,该数组永远不会评估为true。您需要获取数组并迭代其值,使用isEqualToString:
(不是isEqualTo
)将每个值与单元格文本值进行比较。