2012-10-08 57 views
2

可能重複:
How to write a method/message with multiple parameters?如何定義和調用的方法有多個參數

我真的很困惑在這裏...我看着SO和谷歌在那裏我找到了使用兩個參數調用方法的示例。所以我修改了它以供我使用,不幸的是我無法實現它的工作。這是我更新的代碼:

- 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 { 

我都想盡排列,我認爲是合理的,它仍然不會建。我得到一個「預期‘:’在調用的方法

我在做什麼錯

+1

定義和調用方法的名稱與_完全不同。 「withEndDate:」部分來自哪裏?你期望會發生什麼? –

回答

9

請閱讀從蘋果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 }中的實現替換分號;即可。一個基本的Objective-C的書

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

非常感謝!一旦我有一個例子來看,這是完全合理的。我發現Apple Docs有點混亂,所以這就是我所需要的。 不過,我的方法調用得到一個警告: 實例方法「-fetchEventsBetweenDate:andDate:」未找到(返回類型默認爲「身份證」) 它是什麼說什麼? – SpokaneDude

+0

你打電話給什麼對象?粘貼你在做什麼,否則我不能幫助 – DrummerB

+0

我更新了代碼,以反映我現在擁有的...仍然在以前的帖子中出現錯誤... – SpokaneDude

2

開始:

當調用一個方法,你與你的變量替換參數聲明。很明顯,你不明白語法或語言(沒有什麼大不了的 - 我們都是從那裏開始的)。

如果你真的有一個方法定義爲:

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

你會使用[someObj fetEventsForADay: date1 : date2];這將吸調用它; Objective-C的交錯參數與方法名模式的關鍵在於使API自行記錄。因此,你可能想:

  • (NSArray的)fetchEventsBetweenStartDate:(NSDate的)SDATE andEndDate:(NSDate的*)EDATE;

這將被稱爲[someObj fetchEventsBetweenStartDate: date1 andEndDate: date2];。更清楚。

相關問題