【问题标题】:How To Pass a Dictionary To a Function如何将字典传递给函数
【发布时间】:2009-11-10 17:38:20
【问题描述】:

好的,所以我认为我这样做是正确的。我是 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

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

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

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

3:如何在类中从另一个类调用此方法? (我知道这涉及到创建一个事物类的对象并调用该对象的方法......我想,但我不确定语法。)

请包含 3 个文件(头文件、实现和我调用的其他类)的相关代码。非常感谢,我已经研究这个特殊问题一段时间了。

【问题讨论】:

  • “请包含 3 个文件的相关代码” - 我不是典型的“google it”或“没有作业”或“rtfm”的人,但你问的很多我们没有真正提供任何努力的证据。这些事情并没有那么复杂,我们很乐意为您提供帮助,但我很确定我们中的许多人至少希望首先看到您的尝试。
  • 我可以为您提供我的应用程序的源代码,但这不是一个好主意。我在我的程序上做了很多工作,但我找不到任何关于此的文档。我也不希望别人为我做任何工作,但是在这个问题上工作了 2 周后,我已经达到了我的能力极限。

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


【解决方案1】:

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

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

[myRectangle setWidth:20.0];

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

[someObject setAttributes:dictionary];

【讨论】:

    【解决方案2】:

    在标题中:

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

    在实施中:

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

    调用方法:

    NSMutableDictionary *returnDict=[EndOfTurnObjC doSomethingWithDictionary:dictionary];
    

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

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

    【讨论】:

      【解决方案3】:

      如果你只是想对你的字典做些事情,你只是

      -(void) changeMyDictionary:(NSMutableDictionary * ) 字典_

      {

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

      }

      不需要返回字典。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        相关资源
        最近更新 更多