iOS 应用程序崩溃日志地址簿

标签 ios xcode swift crash addressbook

我向 AppStore 提交了我的应用程序,Apple 表示它在启动时崩溃。我在所有模拟器和物理设备上对此进行了全面测试,但我无法复制这一点,一切正常。但无论苹果使用什么设备/进程,他们都表示它在发布时就会崩溃。

我得到了崩溃日志并在 XCode 中打开它,并且能够看到哪里似乎崩溃了,但其中的其他所有内容对我来说毫无意义。我无法解释或说出原因。仅通过查看它,当它尝试获取 ABAutorization 并获取 ABContacts 时似乎会崩溃,但我无法复制这个问题,所以我很困惑。希望有人能帮忙:

 Thread 4 name:  Dispatch queue: com.apple.root.default-qos
Thread 4 Crashed:
0   libswiftCore.dylib              0x000000010032e4e8 0x1001b4000 + 1549544
1   libswiftCore.dylib              0x000000010030abf4 0x1001b4000 + 1403892
2   Phonelist                       0x00000001001112f8 Phonelist.AddressBookEngine.getAllContacts (Phonelist.AddressBookEngine.Type)(Swift.AnyObject) -> () (AddressBookEngine.swift:247)
3   Phonelist                       0x00000001001161b0 Phonelist.AddressBookEngine.(getABAuth (Phonelist.AddressBookEngine.Type) -> (Swift.String) -> ()).(closure #1) (AddressBookEngine.swift:189)
4   AddressBook                     0x0000000185d2b284 __37-[ABTCC accessRequestWithCompletion:]_block_invoke + 44
5   TCC                             0x0000000192ab56ec __TCCAccessRequest_block_invoke56 + 420
6   TCC                             0x0000000192ab7524 __tccd_send_block_invoke + 40
7   libxpc.dylib                    0x00000001980186b4 _xpc_connection_reply_callout + 44
8   libxpc.dylib                    0x0000000198018644 _xpc_connection_call_reply + 36
9   libdispatch.dylib               0x0000000197e15368 _dispatch_client_callout + 12
10  libdispatch.dylib               0x0000000197e21408 _dispatch_root_queue_drain + 1148
11  libdispatch.dylib               0x0000000197e22758 _dispatch_worker_thread3 + 104
12  libsystem_pthread.dylib         0x0000000197ff12e0 _pthread_wqthread + 812
13  libsystem_pthread.dylib         0x0000000197ff0fa4 start_wqthread + 0

这是我的 getAB() 函数,以防万一:

static func getABAuth(action: String){
        var addressBook: ABAddressBookRef?
        var error: Unmanaged<CFError>? = nil

        if ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Authorized || ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.NotDetermined{

            Scripts.log("Access Recognized to address book")

            addressBook = ABAddressBookCreateWithOptions(nil, &error).takeRetainedValue()
            if addressBook == nil{
                println(error)
                return
            }
            ABAddressBookRequestAccessWithCompletion(addressBook){
                (granted:Bool, err:CFError!) in
                if granted {
                    //addressBook = addressBook

                    Scripts.log("Access Granted to address book")

                    if (action == "add"){
                        self.addContact(addressBook!)
                    }

                    if (action == "get"){
                        self.getAllContacts(addressBook!)
                    }

                }
                else {
                    println(err)
                }
            }

        }

        if ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Denied{
            Scripts.log("Access denied to address book")
        }

        if ABAddressBookGetAuthorizationStatus() == ABAuthorizationStatus.Restricted{
            Scripts.log("Access restricted to address book")
        }

        //return false

    }

最佳答案

尝试使用可选表达式:

addressBook = ABAddressBookCreateWithOptions(nil, &error)?.takeRetainedValue()

关于iOS 应用程序崩溃日志地址簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28957574/

相关文章:

ios - __pthread_kill 在第二次请求时

ios - TableView 选中标记和取消选中并向上滚动仍然选中 Ios Swift 4 中的单元格值

ios - initWithNibName 帮助 : returning blank screen when trying to pass data

ios - 用逗号分隔的字符串内容填充数组?

ios - 为什么我的图像没有显示在 UIImageView 中?

ios - 所有章节标题显示在一个章节中

swift - 处理困惑的 swift optionals

ios - 在 ContainerViewController 类中以编程方式为 UIButton 设置新的背景图像,具体取决于它所在的父 View

ios - Objective-c HTML->UIColor 中的 RGB 颜色不正确

ios - 如何访问存储在 iOS 设备上的音乐文件?