5

重複の可能性:
複数のパラメーターを持つメソッド/メッセージを記述する方法は?

私はここで本当に混乱しています... SO と Google を調べたところ、2 つのパラメーターでメソッドを呼び出す例が見つかりました。そのため、自分で使用するために変更しましたが、残念ながら動作しません。これが私の更新されたコードです:

-  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の Objective-C プログラミング言語をお読みください。特にメッセージ構文部分。

メッセージ宣言の構文は次のようになります。

- (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 に答える