Как передать словарь в функцию - PullRequest
0 голосов
/ 10 ноября 2009

Хорошо, так что я думаю, что делаю это правильно. Я новичок в 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 ]

4 голосов
/ 10 ноября 2009

Apple Язык программирования Objective-C - хороший и довольно краткий справочник по синтаксису Objective-C. То, что вы хотите, это просто обычный метод, который принимает NSDictionary в качестве параметра. Итак, как указано в этом документе:

Сообщение с одним аргументом прикрепляет двоеточие (:) к имени селектора и помещает аргумент сразу после двоеточия. Эта конструкция называется ключевым словом; ключевое слово заканчивается двоеточием, а после двоеточия следует аргумент, как показано в этом примере:

[myRectangle setWidth:20.0];

Таким образом, вызов метода для передачи dictionary будет выглядеть так:

[someObject setAttributes:dictionary];
1 голос
/ 10 ноября 2009

В шапке:

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

в реализации:

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

Для вызова метода:

NSMutableDictionary *returnDict=[EndOfTurnObjC doSomethingWithDictionary:dictionary];

Обратите внимание, что для хорошего дизайна вы не захотите передавать изменяемый словарь, как токен. Это напрашивается на неприятности. Вместо этого передайте статические словари и верните другой словарь.

Вы также не должны передавать данные в UIView. Вместо этого ваш UIViewController должен обработать данные и затем заполнить элементы пользовательского интерфейса представления по мере необходимости.

0 голосов
/ 10 ноября 2009

, если вы просто хотите что-то сделать со своим словарем, просто

- (void) changeMyDictionary: (NSMutableDictionary *) dictionary_

{

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

}

нет необходимости возвращать словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...