禁用该选项以添加已从NSUserDefaults加载的数组中的对象

时间:2013-03-04 19:20:22

标签: objective-c nsuserdefaults

我正在从plist到NSArray(自定义对象Recipe)中加载食谱并将它们显示在UITableView中。
我在详细视图中添加了一个选项,以将配方添加到收藏夹视图。

显然我想要保存用户收藏夹选项的选项,所以我将自定义类符合NSCoding并将initWithCoder和encodeWithCoder方法添加到我的自定义对象。

重新启动应用程序后,收藏夹阵列将被保存并正确重新加载 问题是我可以在每次重新启动时添加相同的配方(当应用程序运行时我可以添加和删除配方就好了。)

有人可以帮我想一个方法来禁用添加上次应用程序运行时添加的食谱的选项吗?

2 个答案:

答案 0 :(得分:2)

您可以使用[array containsObject:obj]方法检查数组,还需要在您的班级中实施正确的isEqual:方法。

此外,您可以考虑使用NSSet代替NSArray,因为NSSet在逻辑上更适合唯一的对象集,而不是NSArray。使用NSSet,您仍然需要实现isEqual:

答案 1 :(得分:1)

你可以让它们覆盖-hash和-isEqual:并使用一个集合...然后你可以尝试一遍又一遍地添加它们,它不重要,因为一个集合只能容纳其中一个......或者你可以继续使用数组并检查数组中的对象。

if ([someArray indexOfObject:someObj]==NSNotFound)
{
    [someArray addObject:someObj];
}