首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSMutableSet集减号集不工作

NSMutableSet集减号集不工作
EN

Stack Overflow用户
提问于 2014-05-15 02:19:06
回答 1查看 2.9K关注 0票数 2

我一定是错过了一些基本的东西--希望有人能向我指出这一点。

我有两个NSSets。集合A包含40个NSNumber值,而设置B包含20个NSNumber值。集合A包含所有的集合B的20个值加上20个其他值不被集合共享。

我想做的是: NSSet *newSet = Set A- Set B,其中新集只包含集合B中不包含的集合A中的20个值。尽管我使用的是'minusSet',但我的新集合总是包含所有40个原始值。我已经记录了每个集合A和B的内容,以确保它们包含我前面描述的内容。

这是我的代码:

1)创建集合A(包含40 NSNumbers)

代码语言:javascript
复制
NSMutableSet *fetchedThreadIds = [NSMutableSet setWithArray:[threadedJsonMessages valueForKey:@"tid"]];

2)创建集合B(包含20 NSNumbers,也在集合A中)

代码语言:javascript
复制
NSSet *savedThreads = threadIdsForSavedThreads([fetchedThreadIds allObjects]);

3)试图从集合A中减去集合B:

代码语言:javascript
复制
[fetchedThreadIds minusSet:savedThreads];

4)将所有剩余的对象添加到新数组中:

代码语言:javascript
复制
threadIdsForMessageFetch = [fetchedThreadIds allObjects];

然而,threadIdsForMessageFetch包含40个对象,而不是20个。

集A

代码语言:javascript
复制
{(
2540000000136987400,
2540000000141777055,
2540000000144609986,
2540000000125243232,
2540000000144610000,
2320000003021796109,
2540000000144375484,
2540000000136185765,
2540000000135311778,
2540000000135311816,
2540000000124128112,
2540000000125012438,
2480000001401011569,
2540000000144610015,
2540000000135311744,
2540000000139755359,
2540000000135311848,
2540000000143846308,
2540000000145732667,
2540000000143985955,
2540000000136185740,
2540000000135756434,
2540000000134373148,
2540000000140816249,
2540000000130860748,
2540000000127140093,
2540000000143526120,
2540000000102176392,
2540000000144609962,
2540000000128826163,
2540000000136185694,
2540000000133208691,
2540000000144555891,
2540000000138091838,
2540000000130179358,
2540000000126098342,
2540000000145162237,
2540000000131688927,
2540000000136185715,
2540000000143526101
)}

集B

代码语言:javascript
复制
{(
2540000000136987400,
2540000000138091838,
2540000000143985955,
2540000000144555891,
2540000000140816249,
2540000000145732667,
2540000000144609986,
2540000000144610000,
2540000000144609962,
2540000000144610015,
2540000000141777055,
2540000000143526101,
2540000000143526120,
2480000001401011569,
2540000000136185694,
2540000000145162237,
2540000000143846308,
2320000003021796109,
2540000000144375484,
2540000000139755359
)}

新阵列:

代码语言:javascript
复制
<__NSArrayI 0xc4b8e40>(
2540000000136987400,
2540000000141777055,
2540000000144609986,
2540000000125243232,
2540000000144610000,
2320000003021796109,
2540000000144375484,
2540000000136185765,
2540000000135311778,
2540000000135311816,
2540000000124128112,
2540000000125012438,
2480000001401011569,
2540000000144610015,
2540000000135311744,
2540000000139755359,
2540000000135311848,
2540000000143846308,
2540000000145732667,
2540000000143985955,
2540000000136185740,
2540000000135756434,
2540000000134373148,
2540000000140816249,
2540000000130860748,
2540000000127140093,
2540000000143526120,
2540000000102176392,
2540000000144609962,
2540000000128826163,
2540000000136185694,
2540000000133208691,
2540000000144555891,
2540000000138091838,
2540000000130179358,
2540000000126098342,
2540000000145162237,
2540000000131688927,
2540000000136185715,
2540000000143526101
)

在减号集合调用之前,A和B的计数如下:

代码语言:javascript
复制
2014-05-14 22:37:00.900 App[35877:60b] fetchedThreadIdsCount = 40
2014-05-14 22:37:00.900 App[35877:60b] savedThreadsCount = 20
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 02:38:02

我尝试了这个方法,所以我猜还有其他的代码丢失了,或者NSNumbers真的不一样,只是打印出来的表示形式是一样的。

代码语言:javascript
复制
NSMutableSet *fetchedThreadIds = [NSMutableSet setWithObjects:@1, @2, @3, @4, nil];
NSSet *savedThreads = [NSSet setWithObjects:@2, @3, nil];
NSLog(@"fetchedThreadIds: %@", fetchedThreadIds);
NSLog(@"savedThreads: %@", savedThreads);

[fetchedThreadIds minusSet:savedThreads];
NSLog(@"fetchedThreadIds: %@", fetchedThreadIds);
NSArray *threadIdsForMessageFetch = [fetchedThreadIds allObjects];
NSLog(@"threadIdsForMessageFetch: %@", threadIdsForMessageFetch);

NSLog输出:

fetchedThreadIds:{( 3 . 2、 1、 4 )} savedThreads:{( 3 . (2 )} fetchedThreadIds:{( 1、 4 )} threadIdsForMessageFetch:( 1、 4)

张贴作为一个主要的格式的答案。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23668201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档