ios - 从自定义类调用方法而不创建新实例,带有 Int 参数的 IntegerLiterallConvertible 错误

标签 ios class swift methods

我正在尝试调用类方法而不创建新实例。我很确定方法调用是正确的。我创建了一个名为CalculateWeek 的类。这个类有几个对日期进行操作的方法。这是我的CalculateWeek 类`

    import Foundation
    class CalculateWeek {
    let calendar = NSCalendar.currentCalendar()
    var date = NSDate()

    func weekStart(weekDaySelected:Int)->NSDate?{
        //Get Current Weekday
        let currentWeekday = calendar.components(.CalendarUnitWeekday, fromDate:date)
        var weekDay = [currentWeekday.weekday]  //date component
        println("Current weekday is \(weekDay[0])") //

        var daysToSubtract = 1
        let dateComponents = NSDateComponents()
        dateComponents.day = daysToSubtract

        let startDate = calendar.dateByAddingComponents(dateComponents, toDate: todayStart!, options: nil)  
        return startDate  
    }

然后我尝试从我的 View Controller 类调用此方法:

var tempWeekEnd = CalculateWeek.weekStart(1)

我收到错误“TypeCalculateWeek”不符合协议(protocol)“IntegerLiteralConvertible” 我知道代码是正确的,因为如果我将方法 weekStart 复制并粘贴到我的 View Controller 类中,它就可以正常工作。它一定与我如何调用该方法有关,但我无法弄清楚。在该方法中,我的参数类型是 Int,并且我发送一个 Int。

最佳答案

我在代码中发现了几个问题:

  1. weekStart() 方法不是类方法,因此不能按照您想要的方式调用。你需要实例来调用它。

  2. 您正在操作的日期是一个实例成员,如果您将其设为类方法,则无法从 weekStart() 访问它。

我建议您在创建的 CalculateWeek 实例上调用 weekStart() 或使其成为类方法以按您想要的方式调用。

在相关说明中,我请求您查看我的日期操作框架 here 。它有很多您可能需要的包装器。

关于ios - 从自定义类调用方法而不创建新实例,带有 Int 参数的 IntegerLiterallConvertible 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259180/

相关文章:

javascript - 将类属性设置为函数 - 创建类的实例时会调用该函数吗?

swift - 无法使用 getDataInBackgroundWithBlock 将 PFFile 转换为 UIImage

ios - 快速日期格式化,从服务器返回的日期与发送到服务器的日期不同

ios - 如何在 XCTest 中设置 UItextfield 文本

ios - 使用带有 audiokit 的 SF2 声音字体库将 MIDI 文件转换为音频文件

javascript - 如何使用方法创建自定义类

ios - Firebase Cloud Messaging 推送通知不再出现在 iOS 上

c# - 具有相似元素的 Selenium Webdriver C# 页面

ios - 是否有任何适用于 iOS 的自定义日期选择器,其中年份选择是可选的?

ios - 旋转设备时,react-native ios 应用程序不会重新呈现