2016-11-10 4 views
0

これをSwift 3.0に変換しようとすると問題が発生します。非機能型の値を呼び出せません

私は:

public func calendarView(_ view: DDCalendarView, eventsForDay date: Date) -> [Any]? { 
     let daysModifier = (date as NSDate).days(from: Date()) 
     //var daysMod = date.days(from: Date()) 

     //var newE = self.events(forDay: daysModifier as Int) as NSArray 
     var Good = self.events(forDay: daysModifier) as Any 
     var dates = [NSMutableArray]() 
     var e:DDCalendarEvent 

     for e in Good as! [AnyObject] { 

      if e.dateBegin(isEqual(date)) as! Bool == true || e.dateEnd(isEqual(date)) as! Bool == true { 
       dates.append(e as! NSMutableArray) 
      } 
    } 

     return dates 
    } 

条件e.dateBegin(のisEqual(日)){}このエラーを与えている場合。 Objective-Cのコードコードにいる間は、次のとおりです。

- (NSArray *)calendarView:(DDCalendarView *)view eventsForDay:(NSDate *)date { 
    //should come from db ;) NOW using testdata 
    NSInteger daysMod = [date daysFromDate:[NSDate date]]; 
    NSArray *newE = [self eventsForDay:daysMod]; //always today ;) 

    NSMutableArray *dates = [NSMutableArray array]; 
    for (DDCalendarEvent *e in newE) { 
     if([e.dateBegin isEqualDay:date] || 
      [e.dateEnd isEqualDay:date]) { 
      [dates addObject:e]; 
     } 
    } 
    return dates; 
} 

とそのは

- (BOOL)isEqualDay:(NSDate *)date { 
    NSDateComponents *compA = self.currentCalendarDateComponents; 
    NSDateComponents *compB = date.currentCalendarDateComponents; 
    return ([compA day]==[compB day] && [compA month]==[compB month ]&& [compA year]==[compB year]); 
} 

isEqualDay機能のために、このためのあらゆるソリューションをブール値を返しますか?

答えて

1

このライン:

if e.dateBegin(isEqual(date)) as! Bool == true || e.dateEnd(isEqual(date)) as! Bool == true { 

は次のようになります。

if e.dateBegin.isEqualDay(date) == true || e.dateEnd.isEqualDay(date) == true { 

これは、あなたがDateの拡張機能としてisEqualDay:方法をも翻訳されている前提としています。

ところで、あなたの翻訳には他にも多くの問題があります。上記はあなたの質問であなたが尋ねる特定の行をカバーしています。

次はあなたが望むものでなければなりません:

public func calendarView(_ view: DDCalendarView, eventsForDay date: Date) -> [Date] { 
    let daysModifier = date.days(from: Date()) // return Int 
    let newE = self.events(forDay: daysModifier) // return [DDCalendarEvent] 

    var dates = [Date]() 
    for e in newE { 
     if e.dateBegin.isEqualDay(date) == true || e.dateEnd.isEqualDay(date) == true { 
      dates.append(e) 
     } 
    } 

    return dates 
} 
+0

あなたが首謀している.btwあなたはすぐにあなたに戻って取得suggest.willとして私はあなたのコードを適用でき@rmddy。 –

+0

この関数は配列を返すpublic function calendarView(_ view:DDCalendarView、eventsForDay date:Date) - > [Any] { の代わりにデータソースメソッドを指定する必要があります。そうでなければエラーを表示します。 –

+0

OK少し気をつけてください。あなたの 'DDCalendarView'クラスについては何も知りません。私はちょうど良い翻訳を提供しようとしました。小さな変更が必要になる可能性があります。 – rmaddy

関連する問題