如何定义和调用具有多个参数的方法

时间:2012-10-08 16:58:46

标签: objective-c

  

可能重复:
  How to write a method/message with multiple parameters?

我在这里真的很困惑......我看过SO和Google,在那里我找到了一个用两个参数调用方法的例子。所以我修改了它供我使用,不幸的是我无法让它工作。这是我更新的代码:

-  definition of method
- (NSArray *) fetchEventsBetweenDates: (NSDate *) sDate: andDate: (NSDate *) eDate;

- definitions and creation of sD and eD
    //  convert start dates to NSDate
    NSDateFormatter* df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"MM/dd/yyyy"];
    NSDate* sD = [df dateFromString:@"10/03/2012"];
    NSLog(@"startDate: %@", sD);

    //  convert end dates to NSDate
    NSDate* eD = [df dateFromString:@"10/05/2012"];
    NSLog(@"endDate: %@", eD);

- call to method
    [self.eventsList addObjectsFromArray:[self fetchEventsBetweenDates: sD andDate: eD]];

- method
- (NSArray *) fetchEventsBetweenDates: (NSDate *) sDate: andDate: (NSDate *) eDate  {

我已经尝试过我认为合理的每一种排列,但它仍然无法构建。我正在接受一个“预期的':'调用方法。

我做错了什么?

2 个答案:

答案 0 :(得分:11)

请阅读Apple的The Objective-C Programming Language。特别是Message Syntax部分。

消息声明语法如下:

- (return type)myMethodParam1:(param1 type)p1 param2:(param2 type)p2;

示例:

- (NSArray *)fetchEventsBetweenDate:(NSDate *)startDate andDate:(NSDate *)endDate;

实现是相同的,您只需将分号;替换为大括号{ implementation }中的实现。

调用方法时,将参数声明替换为变量:

// Assuming aDate and otherDate exist.
[self fetchEventsBetweenDate:aDate andDate:otherDate];

答案 1 :(得分:4)

从基本的Objective-C书开始。非常清楚你还不懂语法或语言(没什么大不了的 - 我们都从那里开始)。

如果您确实将方法定义为:

- (NSArray *) fetchEventsForADay: (NSDate *) sDate: (NSDate *) eDate;

您可以使用[someObj fetEventsForADay: date1 : date2];来调用它。 Objective-C的interleave-arguments-with-method-name模式的重点是使API自我记录。因此,你可能想要:

  • (NSArray )fetchEventsBetweenStartDate:(NSDate )sDate和EndDate:(NSDate *)eDate;

这将被称为[someObj fetchEventsBetweenStartDate: date1 andEndDate: date2];。更清楚。