iOS/Xcode:缺少日历权限plist键致崩溃,添加键后仍无响应
我太懂这种明明按错误提示加了权限键,结果APP还是崩溃的糟心感了!之前帮同事排查过一模一样的EventKit权限问题,给你列几个最容易踩的坑和解决办法:
确认修改的是当前Target对应的Info.plist
很多人会不小心改错plist文件(比如改了项目根目录的plist,而非当前运行Target关联的那个)。你可以在Xcode里选中你的Target,进入「Build Settings」,搜索「Info.plist File」,核对路径指向的文件是不是你刚才修改的那个。检查键名拼写绝对准确
NSCalendarsUsageDescription是严格区分大小写的,少一个字母、大小写错了都不行——比如写成NSCalendarUsageDescription(少了末尾的s)就完全没用。建议直接复制错误提示里的键名粘贴到plist里,避免手敲出错。确保描述字符串不为空
系统不会接受空的权限描述,你得写一句清晰的说明,比如「需要访问日历来创建和管理您的日程安排」,不能只留个空字符串。清理缓存并重启Xcode
Xcode有时候会缓存旧的配置,先按Cmd+Shift+Option+K清理Build Folder,然后完全退出Xcode再重新打开,重新运行项目试试。检查Target的Info标签页是否同步
有时候直接改plist文件可能没同步到Target的配置里,你可以进入Target的「Info」标签页,在「Custom iOS Target Properties」里手动添加NSCalendarsUsageDescription键和对应的描述,确保它被正确关联到当前运行的Target。
如果以上都试过还是不行,你可以再检查下是不是同时用到了提醒事项的API——要是有访问提醒的操作,还得额外添加NSRemindersUsageDescription键哦。
内容的提问来源于stack exchange,提问作者user6631314

