gpt4 book ai didi

ios - NSNotification 被多次调用

转载 作者:行者123 更新时间:2023-11-30 11:55:54 34 4
gpt4 key购买 nike

我的 didFinishLaunchingWithOptions 中有以下代码

  NotificationCenter.default.addObserver(
self,
selector: #selector(addressBookDidChange),
name: NSNotification.Name.CNContactStoreDidChange,
object: nil)

这是它调用的方法

@objc func addressBookDidChange(notification: NSNotification){
self.processContacts()

}

这是正在删除的通知

func applicationWillTerminate(_ application: UIApplication) {
NotificationCenter.default.removeObserver(NSNotification.Name.CNContactStoreDidChange)
}

问题是,当我通过下面的方法添加新联系人时,addressBookDidChange 会被多次调用,而不是一次

func addContact(contact:ContactObject) {
let store = CNContactStore()

let contactToAdd = CNMutableContact()
contactToAdd.givenName = contact.firstName
contactToAdd.familyName = contact.lastName
contactToAdd.organizationName = contact.company

for case let contactNumber as PhoneNumberObject in contact.phoneNumbers!{
let mobileNumber = CNPhoneNumber(stringValue: contactNumber.number)
contactToAdd.phoneNumbers.append(CNLabeledValue(label: contactNumber.type.getCNLabelValue(), value: mobileNumber))
}


if let image = contact.image {
contactToAdd.imageData = UIImagePNGRepresentation(image)
}

let saveRequest = CNSaveRequest()
saveRequest.add(contactToAdd, toContainerWithIdentifier: nil)

do {
try store.execute(saveRequest)
} catch {
NSLog("Error adding contact \(contact.firstName) \(contact.lastName) : \(error)")
}
}

如何让添加一个联系人时只调用一次通知?

最佳答案

我认为基于委托(delegate)设置通知发布并不是一个好主意,因此应该做的是从委托(delegate)检查条件是否添加通知更改为联系人来发布通知。

关于ios - NSNotification 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47822789/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com