簡體   English   中英

NSNotification被多次調用

[英]NSNotification getting called multiple times

我的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)")
        }
    }

我如何才能只添加一次聯系人就調用一次通知?

我認為基於委托設置通知發布不是一個好主意,因此應該做的是從委托檢查條件中發布通知,是否添加了通知更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM