【发布时间】:2015-11-17 17:55:35
【问题描述】:
我有一个函数,它在完成后返回一些数组。函数如下所示:
func fetchCalendarEvents (completion: (eventArray: [Meeting]) -> Void) -> Void {
let eventStore : EKEventStore = EKEventStore()
eventStore.requestAccessToEntityType(EKEntityType.Event, completion: {
granted, error in
if (granted) && (error == nil) {
print("access granted: \(granted)")
.......
completion (eventArray: arrayOfEvents)
}
}
else {
print("error: access not granted \(error)")
completion (eventArray: [])
}
})
}
当尝试像这样调用这个函数时,我收到以下错误:
//error in this line: Extraneous argument label "completion" in call:
CalendarController.fetchCalendarEvents(completion:{(eventArray:[Meeting]) -> Void in
for meeting in eventArray {
print("Meeting: \(meeting.title)")
}
})
我试图围绕完成处理程序展开我的头脑,我使用了这个例子: http://alanduncan.me/2014/06/08/Swift-completion-blocks/ 但是我不明白这段代码有什么问题?
【问题讨论】:
-
@matt:不,但是你用什么代替?我需要获取日历事件,你是怎么做的(我们支持ios8、ios9,以防万一)
-
对不起,我只是糊涂了。一大早来这里!
-
哈哈,没问题 :)) 我通过调整@Eric D. 的答案找到了正确的答案