好吧,所以我认为我这样做是正确的。我是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个文件的相关代码(标题,实现和我调用的其他类)。非常感谢,我一直在研究这个特殊问题。
答案 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];
....
...
}
无需返回字典。