5

可能重复:
如何编写具有多个参数的方法/消息?

我在这里真的很困惑......我查看了 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  {

我已经尝试了所有我认为合理的排列,但它仍然无法构建。我在调用该方法时收到“预期的':'。

我究竟做错了什么?

4

2 回答 2

13

请阅读Apple的 The Objective-C Programming Language。特别是消息语法部分。

消息声明语法如下:

- (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];
于 2012-10-08T17:04:06.257 回答
5

从一本基本的 Objective-C 书籍开始。很明显,您还不了解语法或语言(没什么大不了的——我们都是从那里开始的)。

如果你真的有一个方法定义为:

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

你会用[someObj fetEventsForADay: date1 : date2]; 那会很烂;Objective-C 的 interleave-arguments-with-method-name 模式的全部意义在于使 API 能够自我记录。因此,您可能想要:

  • (NSArray ) fetchEventsBetweenStartDate:(NSDate ) sDate andEndDate:(NSDate*) eDate;

这将被称为[someObj fetchEventsBetweenStartDate: date1 andEndDate: date2];. 清晰得多。

于 2012-10-08T17:05:33.540 回答