首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能清除/重置NSMutableSet?

不能清除/重置NSMutableSet?
EN

Stack Overflow用户
提问于 2014-09-12 18:53:14
回答 1查看 325关注 0票数 1

这就是我想做的。每次我的viewDidLoad启动时,都要得到7个随机的、不重复的数字.我得到了它来创作随机,但我一直试图清除NSMutableSet时,它加载得到一个新的集,我有麻烦。NSLog清楚地显示了NSMutableSet中没有任何东西,但是它总是按照相同的顺序得到相同的数字?

代码语言:javascript
复制
// Create set
NSMutableSet *mySet = [NSMutableSet setWithCapacity:6];

// Clear set
NSMutableSet *mutableSet = [NSMutableSet setWithSet:mySet];
[mutableSet removeAllObjects];
mySet = mutableSet;

NSLog(@"mutableSet: %@", mutableSet);  // Shows nothing
NSLog(@"mySet: %@", mySet);  // Shows nothing

// Assign random numbers to the set
while([mySet count]<=6){
    int Randnum = arc4random() % 7+1;
    [mySet addObject:[NSNumber numberWithInt:Randnum]];
}

NSLog(@"mySet1: %@", mySet);  // Always shows 5,1,6,2,7,3,4 ???
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-12 20:31:12

NS(Mutable)Set是一个无序的集合,它不会在插入元素时保留元素的顺序。因此,您的输出仅显示集合包含从1到7的数字。

您有不同的选项来获得预期的输出。

  1. 使用NSMutableOrderedSet代替。
  2. 使用一个集合来跟踪已经发生的数字,但是也将这些数字存储在一个数组中: NSMutableArray *numbers = NSMutableArray数组;NSMutableSet *mySet = NSMutableSet set;NSMutableSet* mySet =NSMutableSet set;NSMutableSet(数字计数< 6) { NSNumber *arc4random_uniform set= @(arc4random_uniform(7) + 1);if () { numbers :randNum;mySet addObject:randNum;}NSLog(@“数字:%@",数字);
  3. 对于一个小集合(如您的示例中的7个数字),您只需使用一个数组: NSMutableArray *numbers = NSMutableArray数组;而(数字计数< 6) { NSNumber *arc4random_uniform= @(arc4random_uniform(7) + 1);if () { numbers;} NSLog(@"numbers:%@",数字);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25814921

复制
相关文章

相似问题

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