gpt4 book ai didi

Swift EKRecurrenceDayOfWeek 问题

转载 作者:行者123 更新时间:2023-11-30 10:08:31 24 4
gpt4 key购买 nike

我正在尝试添加每周一重复的提醒。但我收到以下错误:

 Cannot convert value of type 'Int' to expected argument type 'EKWeekday' 

当我添加 RecurrenceRule 时。

Apple 的文档中指出:

var dayOfTheWeek: EKWeekday { get }

值从 1 到 7,其中星期日为 1。

Link to Documentation

下面是我的代码,其中显示了发生错误的点。

        let reminder = EKReminder(eventStore: eventStore)
let calendarIndentifier = NSUserDefaults.standardUserDefaults().objectForKey("calendarIdentifier")
print("calendar.calendarIdentifier : \(calendarIndentifier)")

reminder.title = "Don't forget to walk the dog!"
reminder.calendar = eventStore.calendarWithIdentifier(calendarIndentifier as! String)!
reminder.priority = 3;
reminder.addRecurrenceRule(EKRecurrenceDayOfWeek(2) )
*** error happens here ***

let alarm = EKAlarm(absoluteDate: reminderTime)
reminder.addAlarm(alarm)

如何克服这个错误?

最佳答案

构造函数语法EKRecurrenceDayOfWeek(2)不起作用,因为 EKRecurrenceDayOfWeek类不包含带有单个整数参数的初始值设定项。根据该类的 Swift 接口(interface)(您可以通过 cmd 单击类名轻松地在 Xcode 中获取该接口(interface)),这些是可能的初始值设定项:

public class EKRecurrenceDayOfWeek : NSObject, NSCopying {
public convenience init(_ dayOfTheWeek: EKWeekday)
public convenience init(_ dayOfTheWeek: EKWeekday, weekNumber: Int)
public init(dayOfTheWeek: EKWeekday, weekNumber: Int)
}

他们都采取 EKWeekday ,这是一个枚举:

public enum EKWeekday : Int {
case Sunday
case Monday
case Tuesday
case Wednesday
case Thursday
case Friday
case Saturday
}

与 ObjC 不同,即使枚举的基础值是整数,您也需要使用枚举大小写符号。因此,构建星期几的调用应如下所示:

EKRecurrenceDayOfWeek(.Monday)

(其他有效的形式包括 EKRecurrenceDayOfWeek(EKWeekday.Monday)EKRecurrenceDayOfWeek(EKWeekday(rawValue: 2)) ,但这些形式不太清晰且不太简洁。)

<小时/>

但这只是最内在的问题。如果您查看 EKReminder 的界面或文档,你会看到addRecurrenceRule需要 EKRecurrenceRule ,不是 EKRecurrenceDayOfWeek 。所以你需要构建其中之一。以下是使用您想要的星期几的可能规则:

let rule = EKRecurrenceRule(recurrenceWithFrequency: .Weekly, 
interval: 1,
daysOfTheWeek: [EKRecurrenceDayOfWeek(.Monday)],
daysOfTheMonth: nil,
monthsOfTheYear: nil,
weeksOfTheYear: nil,
daysOfTheYear: nil,
setPositions: nil,
end: nil)
reminder.addRecurrenceRule(rule)

但是,这也填充了一些关于其他参数的假设,这些参数可能不是您想要的。我建议查看programming guide了解全套选项并决定什么适合您的用例。然后检查 API 文档以确保您在正确的位置使用正确的类型。

关于Swift EKRecurrenceDayOfWeek 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com