添加 let addressBookRef: ABAddressBook 时出现崩溃错误?
While adding let addressBookRef: ABAddressBook i get a crash error?
我正在尝试添加一个简单的“添加到联系人”功能。
只需添加变量
let addressBookRef: ABAddressBook = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
在现有的 DetailViewController 中 class 我的项目崩溃了:
fatal error: unexpectedly found nil while unwrapping an Optional value
只需对 addressBookRef 进行注释,我的项目就不会崩溃
是不是因为我在主视图的 detailviewcontroller 中有变量?
我正在学习本教程,http://www.raywenderlich.com/97936/address-book-tutorial-swift-ios
[编辑]
我也有
@IBAction func addToContacts(sender: AnyObject) {
let authorizationStatus = ABAddressBookGetAuthorizationStatus()
switch authorizationStatus {
case .Denied, .Restricted:
//1
print("Denied")
case .Authorized:
//2
print("Authorized")
case .NotDetermined:
//3
print("Not Determined")
//promptForAddressBookRequestAccess(addContacts)
}
print("Add to contacts")
}
当我对变量进行注释并检查情况时,我看到了 "Denied" 但我预计 "Not Determined",为什么被拒绝了??
[编辑]
哇,这真让人痛苦......我花了 1 小时来获得提示,但有用的是:
删除App->重启iPhone->设置date/time提前2天->重启iPhone->重新编译App
其他我没试过的建议:
1/ 唯一的内部版本号
2/ 设置 --> 通用--> 重置--> 重置位置和隐私
iOS resetting granting access to reminders
这是因为 ABAddressBookCreateWithOptions
是 returning nil 所以调用 takeRetainedValue()
会导致错误。
ABAddressBookCreateWithOptions
将 return nil 是用户不允许您的应用程序访问联系人。在创建地址簿之前,您需要使用 ABAddressBookGetAuthorizationStatus
来确定应用程序是否具有权限。
编辑
听起来像是在显示权限警告时按下了禁止。
您需要打开“设置”应用,向下滚动并点击您的应用名称,将 "Contacts" 旁边的开关更改为打开。
我正在尝试添加一个简单的“添加到联系人”功能。
只需添加变量
let addressBookRef: ABAddressBook = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
在现有的 DetailViewController 中 class 我的项目崩溃了:
fatal error: unexpectedly found nil while unwrapping an Optional value
只需对 addressBookRef 进行注释,我的项目就不会崩溃
是不是因为我在主视图的 detailviewcontroller 中有变量?
我正在学习本教程,http://www.raywenderlich.com/97936/address-book-tutorial-swift-ios
[编辑] 我也有
@IBAction func addToContacts(sender: AnyObject) {
let authorizationStatus = ABAddressBookGetAuthorizationStatus()
switch authorizationStatus {
case .Denied, .Restricted:
//1
print("Denied")
case .Authorized:
//2
print("Authorized")
case .NotDetermined:
//3
print("Not Determined")
//promptForAddressBookRequestAccess(addContacts)
}
print("Add to contacts")
}
当我对变量进行注释并检查情况时,我看到了 "Denied" 但我预计 "Not Determined",为什么被拒绝了??
[编辑] 哇,这真让人痛苦......我花了 1 小时来获得提示,但有用的是: 删除App->重启iPhone->设置date/time提前2天->重启iPhone->重新编译App
其他我没试过的建议: 1/ 唯一的内部版本号 2/ 设置 --> 通用--> 重置--> 重置位置和隐私
iOS resetting granting access to reminders
这是因为 ABAddressBookCreateWithOptions
是 returning nil 所以调用 takeRetainedValue()
会导致错误。
ABAddressBookCreateWithOptions
将 return nil 是用户不允许您的应用程序访问联系人。在创建地址簿之前,您需要使用 ABAddressBookGetAuthorizationStatus
来确定应用程序是否具有权限。
编辑
听起来像是在显示权限警告时按下了禁止。
您需要打开“设置”应用,向下滚动并点击您的应用名称,将 "Contacts" 旁边的开关更改为打开。