The unique key for kSecClassGenericPassword is composed of;
kSecAttrAccount
kSecAttrService
To check for its existence, query the keychain store with only these attributes (including kSecReturnAttributes flag).
Including kSecAttrLabel and kSecAttrAccessible will exclude any existing item with the same unique key, but with different attributes.
Once you have confirmed its (non)existence, add the additional attributes and Add or Update.