对日历守护程序的谓词调用失败:错误域= EKCADErrorDomain代码= 1013日历Swift

时间:2014-09-14 10:02:46

标签: ios cordova swift calendar

我有使用日历的应用程序。

该项目工作正常至今。我试图在同一设备上运行app并收到错误:

  

对日历守护程序的谓词调用失败:错误域= EKCADErrorDomain代码= 1013"操作无法完成。 (EKCADErrorDomain错误1013。)"

以下是相关代码:

_estore = EKEventStore()

//_estore.reset() // tried - doesn't help

var predicate:NSPredicate! = _eventStore.predicateForEventsWithStartDate(yearsAgo, endDate:toAgo, calendars:allCals)

 _eventStore.enumerateEventsMatchingPredicate(predicate, usingBlock:{
            (event:EKEvent!, stop:UnsafeMutablePointer<ObjCBool>) in 

    ...

}) // block

我试过没有块实现:

var allEvents:Array<EKEvent> = _eventStore.eventsMatchingPredicate(predicate) as [AnyObject]! as Array<EKEvent>

我检查了设备 - >设置 - &gt;隐私 - &gt;提醒 - 是空的

BTW我没有看到任何设置权限 - &gt;隐私 - &gt;日历

听起来设备没有检测到我的应用使用了日历。

顺便说一下,我成功地取了联系人

其他信息

  • iOS版。 7.1.2
  • 我在设备上有两个帐户
  • 重新安装应用程序没有帮助
  • 代码从昨天起没有改变
  • 设备重启没有帮助

有什么建议吗?

[编辑]

var calendars = _estore.calendarsForEntityType(EKEntityTypeEvent)

不返回任何内容(a.e.空列表)

谢谢,

1 个答案:

答案 0 :(得分:2)

我强迫“允许弹出:”

_estore.requestAccessToEntityType(EKEntityTypeEvent, completion: {(res:Bool!, error:NSError!) in
            if  res == true {
               // println("allowed")
            } else {
                //println("not allowed")
            }

        })

这就完成了工作。

无论如何,谢谢你,