0

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

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

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

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

4

2 回答 2

2

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

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

于 2013-03-04T19:25:11.383 回答
1

你可以让它们覆盖 -hash 和 -isEqual: 并使用一个集合......然后你可以尝试一遍又一遍地添加它们,这没关系,因为一个集合只包含一个......或者你可以继续使用一个数组并检查对象的数组。

if ([someArray indexOfObject:someObj]==NSNotFound)
{
    [someArray addObject:someObj];
}
于 2013-03-04T19:24:48.900 回答