簡體   English   中英

無法調用非功能類型的值

[英]Cannot call value of non-function type

嘗試將其轉換為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(Date)){}出現此錯誤,則為條件。 而在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;
}

及其isEqualDay函數的返回布爾值

- (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]);
}

有什么解決辦法嗎?

這行:

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 {

這是假設你已經又譯isEqualDay:方法上的擴展功能Date

順便說一句-您的翻譯中還有很多其他問題。 上面僅涵蓋了您在問題中詢問的特定行。

以下應該是您想要的:

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM