我对Objective-c还是很陌生,但我仍然不熟悉一些基本概念。就我的问题而言,我想管理网址列表。当要添加新的URL时,如果列表中还没有它,我想添加它。我实现此目标的简单方法是:
NSMutableSet<NSURL*>* setOfURLs = /* some set of urls*/;
NSURL* url = [NSURL URLWithString:@"some string"];
[setOfUrls addObject:url];
这种方法行不通(会吗?),因为该集包含NSURL的对象实例。并且两个不同的对象可能具有相同的url路径。 另一种方法是保留一组字符串,但我认为也许还有其他/更方便的方法来实现此目的。任何提示/技巧将不胜感激。
答案 0 :(得分:1)
addObject 方法仅在对象不包含对象的情况下才将其添加到该对象中(请参见Apple documentation)。
因此,以下代码
NSMutableSet<NSURL*>* setOfURLs = [NSMutableSet setWithArray:@[[NSURL URLWithString:@"http://www.first.com"], [NSURL URLWithString:@"http://www.second.com"]]];
NSURL* url = [NSURL URLWithString:@"http://www.third.com"];
[setOfURLs addObject:url];
NSURL* url2 = [NSURL URLWithString:@"http://www.first.com"];
[setOfURLs addObject:url2];
NSLog(@"%@", setOfURLs);
产生以下输出:
{(
http://www.first.com,
http://www.second.com,
http://www.third.com
)}
结果是http://www.first.com不再添加,因为它已经包含在NSMutableSet中。