Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么';这个NSSet成员方法不起作用吗?_Objective C_Cocoa_Nsset - Fatal编程技术网

Objective c 为什么';这个NSSet成员方法不起作用吗?

Objective c 为什么';这个NSSet成员方法不起作用吗?,objective-c,cocoa,nsset,Objective C,Cocoa,Nsset,我有一个NSSet,其中有@“x”,我正在尝试使用实例方法成员:来检查它,如下所示: NSSet *everythingOnStack = [[NSSet alloc] initWithObjects:program, nil]; NSSet *variablesOnStack = [[NSSet alloc] initWithObjects:([everythingOnStack member:@"x"]),nil]; NSLog(@"Variables on, %@",variab

我有一个
NSSet
,其中有
@“x”
,我正在尝试使用实例方法
成员:
来检查它,如下所示:

NSSet *everythingOnStack = [[NSSet alloc] initWithObjects:program, nil];
NSSet *variablesOnStack =  [[NSSet alloc] initWithObjects:([everythingOnStack member:@"x"]),nil];   

NSLog(@"Variables on, %@",variablesOnStack);
NSLog(@"Everything on stack,%@",everythingOnStack);
成员:
方法似乎没有看到
@“x”
,我不知道为什么。下面是
NSLog()
输出。我阅读了文档,它似乎应该可以工作。困惑

2012-05-21 20:43:07.902 Calculator[21589:f803] Variables on, {(
)}
2012-05-21 20:43:07.904 Calculator[21589:f803] Everything on stack,{(
    (
    1,
    2,
    x,
    "+"
)
)}
我正在通过斯坦福在线课程学习目标C。

字符串
@“x”
不是
所有堆栈的成员。它是任何类型集合
程序
的成员(看起来像一个数组)。当您执行
[everythingOnStack成员:@“x”]
(顺便说一句,括号是不必要的),您将返回
nil
,因此您的
variablesOnStack
的集合为空

为了从
@“x”
中取出
堆栈上的所有内容
,您必须将其从
程序
数组中取出:

[[everythingOnStack member:program] objectAtIndex:3]
请注意,这要求您知道所需对象在数组中的位置。我不确定这会如何影响您的设计--看起来您可能正在实现一个RPN计算器?

字符串
@“x”
不是
everythingOnStack
的成员。它是任何类型集合
程序
的成员(看起来像一个数组)。当您执行
[everythingOnStack成员:@“x”]
(顺便说一句,括号是不必要的),您将返回
nil
,因此您的
variablesOnStack
的集合为空

为了从
@“x”
中取出
堆栈上的所有内容
,您必须将其从
程序
数组中取出:

[[everythingOnStack member:program] objectAtIndex:3]

请注意,这要求您知道所需对象在数组中的位置。我不确定这会如何影响您的设计——看起来您可能正在实现一个RPN计算器?

在我看来,您可能误解了这一行的作用:[[NSSet alloc]initWithObjects:program,nil];这会将一个对象(数组“program”)添加到集合中,但不会将“program”中的每个对象添加到集合中。如果要将数组的每个成员添加到集合中,可以使用NSSet*everythingOnStack=[NSSet setWithArray:program]


如果这样做,那么“x”将成为集合的成员。但是,您将得到一个唯一的集合(我认为所有集合都是唯一的),因此,如果您在“program”中有两次相同的数字,它将在集合中只显示一次。

在我看来,您可能误解了这一行的作用:[[NSSet alloc]initWithObjects:program,nil];这会将一个对象(数组“program”)添加到集合中,但不会将“program”中的每个对象添加到集合中。如果要将数组的每个成员添加到集合中,可以使用NSSet*everythingOnStack=[NSSet setWithArray:program]


如果这样做,那么“x”将成为集合的成员。但是,你会得到一个唯一的集合(我认为所有集合都是唯一的),因此如果你在“程序”中有两次相同的数字,那么它只会在集合中出现一次。

好吧,我希望我有足够的分数来投票支持你。你说得很对NSSet*everythingOnStack=[[NSSet alloc]initWithArray:program];'现在效果很好!!好吧,我希望我有足够的分数来投票支持你。你说得很对NSSet*everythingOnStack=[[NSSet alloc]initWithArray:program];'现在效果很好!!是的,我正在实现一个计算器。。在iTunes U上学习斯坦福在线课程。很棒的课程。在课堂上,建议使用括号。通过使用正确的NSSet初始化(见下文),member方法现在可以完美地工作。谢谢你的帮助。如果我有足够的分数,我会投票给你。是的,我正在实现一个计算器。。在iTunes U上学习斯坦福在线课程。很棒的课程。在课堂上,建议使用括号。通过使用正确的NSSet初始化(见下文),member方法现在可以完美地工作。谢谢你的帮助。如果我有足够的分数,我会投你一票。