【问题标题】:Managing a list of URLs管理 URL 列表
【发布时间】:2018-08-14 15:06:24
【问题描述】:

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

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

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

【问题讨论】:

  • 两个 NSURL 被认为是相等的当且仅当它们为 baseURL 和 relativeString 返回相同的值。

标签: objective-c nsurl nsset


【解决方案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中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2016-01-20
    • 2011-02-10
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多