管理 URL 列表

Managing a list of URLs

我是 Objective-c 的新手,对一些基本概念还不熟悉。至于我的问题,我想管理 urls' 的列表。当添加新的 url 时,如果它不在列表中,我想添加它。我实现这个的简单方法是:

NSMutableSet<NSURL*>* setOfURLs = /* some set of urls*/;
NSURL* url = [NSURL URLWithString:@"some string"];
[setOfUrls addObject:url];

这种方法行不通(会吗?),因为该集合持有 NSURL 的对象实例。并且两个不同的对象可能具有相同的 url 路径。 另一种方法是保存一组字符串,但我认为也许还有其他/更方便的方法来实现它。任何 tips/tricks 将不胜感激。

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