연락처 북을 사용하여 앱을 개발 중입니다. API에서 통화 기록을 표시하고 기록 데이터를 표시 할 때 연락처가 연락처 북에서 사용 가능한지 확인합니다. 사용 가능한 경우 연락처 이름과 이미지를 표시합니다. 백그라운드에서이 프로세스를 수행하고 있지만 때로는 tableview가 멈춰서 어떤 종류의 응답도 제공하지 않습니다. 나는 위의 과정을 수행하기위한 다음 코드를 사용하고 있습니다 :백그라운드에서 연락처 이미지를로드하는 방법은 무엇입니까?
for i in (0..<arrdata.count-1)
{
self.count = self.count + 1
let dict_data = arrdata.value(forKey: String(format: "%d", arguments: [i])) as! NSDictionary
let dict = NSMutableDictionary()
dict.setValue(dict_data["callstart"], forKey: "callstart")
dict.setValue(dict_data["notes"], forKey: "notes")
dict.setValue(dict_data["debit"], forKey: "debit")
dict.setValue(dict_data["pattern"], forKey: "pattern")
dict.setValue(dict_data["calltype"], forKey: "calltype")
dict.setValue(dict_data["billseconds"], forKey: "billseconds")
dict.setValue(dict_data["disposition"], forKey: "disposition")
dict.setValue(dict_data["callednum"], forKey: "callnumber")
DispatchQueue.global(qos: .background).async(execute:
{() -> Void in
let searchContact = Constants.appDelegate.searchForContactUsingPhoneNumber(phoneNumber: dict_data["callednum"] as? String) as [ContactEntry]
if searchContact.count == 1
{
for contact in searchContact
{
dict.setValue(contact.name, forKey: "callednum")
dict.setValue(contact, forKey: "historycontact")
if contact.image == nil
{
dict.setValue(nil, forKey: "contactimage")
}
else
{
let new_image = contact.image?.scaleUIImageToSize(image: contact.image!, size: CGSize(width:250,height:250))
let imgdata = new_image?.jpeg(.lowest)
dict.setValue(imgdata, forKey: "contactimage")
}
}
}
else
{
dict.setValue(nil, forKey: "historycontact")
dict.setValue(dict_data["callednum"], forKey: "callednum")
dict.setValue(nil, forKey: "contactimage")
}
})
dict.setValue(nil, forKey: "historycontact")
dict.setValue(dict_data["callednum"], forKey: "callednum")
dict.setValue(nil, forKey: "contactimage")
dict.setValue(dict_data["callerid"], forKey: "callerid")
self.arrHistory.append(dict)
}
DispatchQueue.main.async
{
self.tblview.reloadData()
}
배경 큐에서 나는 가능한 접촉을 확인 여부.
백그라운드에서 연락처를 검색해야하며 기본 스레드의 배경 및 API 호출에서 데이터를 설정해야합니다.
위의 문제에 대한 해결책이있는 사람이 있으면 알려주세요.
감사합니다.
답을 제공해 주셔서 감사합니다. 나는 당신의 해결책을 시도 할 것입니다. –