如何将字典传递给函数

时间:2009-11-10 17:38:20

标签: iphone objective-c dictionary methods return-value

好吧,所以我认为我这样做是正确的。我是Objective-C的新手,所以我不确定语法...我有一组代码需要多次调用,来自不同的文件。所以我创建了一个新类,其中包含一个方法,我将调用它并传递它所需的值。

因为我传递了不同的值,所以我把它们放在字典中,然后决定只传递字典。这是代码:

NSNumber *testNum = [NSNumber numberWithInt:varMoney];


    NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
    [dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"];
    [dictionary setObject:@"Number two!" forKey:@"2"];
    [dictionary setObject:testNum forKey:@"3"];

此代码创建一个测试变量,然后将其放入字典“字典”中。一切正常,我有一本漂亮的小字典。但是,现在我需要创建类和它的方法来接收字典,并用它做一些事情。

这是我的类头文件:

#import <UIKit/UIKit.h>


@interface EndOfTurnObjC : UIView {

}

@end

这是实施文件:

#import "EndOfTurnObjC.h"


@implementation EndOfTurnObjC


- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;
}



- (void)dealloc {
    [super dealloc];
}


@end

我还没有创建任何真正的代码,因为我不知道如何进行传递。我需要在类中创建一个函数(Method?),它将使一个Dictionary有一个参数,然后返回字典。

我也不知道如何调用这样的函数,因为它在类中。所以,问题是: 1:如何在类中定义方法以接受字典作为参数(然后可能是一些示例代码来拉出字典中的一个对象,所以我可以确定它有效)

2:如何在方法结束时返回字典?

3:如何在课堂上从另一个班级调用此方法? (我知道它涉及制作事物类的对象并调用对象的方法......我想,但我不确定语法。)

请包含3个文件的相关代码(标题,实现和我调用的其他类)。非常感谢,我一直在研究这个特殊问题。

3 个答案:

答案 0 :(得分:4)

Apple的The Objective-C Programming Language是Objective-C语法的一个很好且非常简洁的参考。你想要的只是一个将NSDictionary作为参数的常规方法。正如该文件中所述:

  

带有单个参数的消息将冒号(:)附加到选择器名称,并将参数放在冒号后面。此构造称为关键字;关键字以冒号结尾,冒号后跟一个参数,如下例所示:

[myRectangle setWidth:20.0];

所以传递dictionary的方法调用如下:

[someObject setAttributes:dictionary];

答案 1 :(得分:1)

在标题中:

-(NSMutableDictionary *) doSomethingWithDictionary:(NSMutableDictionary *) aDict;

在实施中:

-(NSMutableDictionary *) doSomethingWithDictionary:(NSMutableDictionary *) aDict{
    //do something with the dictionary 
    return aDict;
}

调用方法:

NSMutableDictionary *returnDict=[EndOfTurnObjC doSomethingWithDictionary:dictionary];

请注意,作为一个好的设计,您不希望像令牌一样传递可变字典。那是在惹麻烦。而是传递静态字典并返回另一个字典。

您也不应该将数据传递给UIView。相反,您的UIViewController应处理数据,然后根据需要填充视图的UI元素。

答案 2 :(得分:0)

如果你只是想在你的字典里做点什么,只需

- (void)changeMyDictionary:(NSMutableDictionary *)dictionary _

{

[dictionary_ doStuff];
    ....
    ...

}

无需返回字典。