0
これはスタックオーバーフローに属しているかどうかわかりませんが、わからない場合はお知らせください。Swift Arrayにはビルド時間を長くする関数が含まれています
配列に連絡先を追加するこのコードは、電話/名前の組み合わせの連絡先がすでに配列に存在する場合には、再度追加しません(重複しないことを意味します)。
これは意図したとおりに動作しますが、ビルド時間が劇的に増え、contains
などの方法を使用するよりよい方法を探しています。 +
連鎖
var contacts = [CNContact]()
let name: String = contact.givenName + " " + contact.middleName + " " + contact.familyName
if (name.stringByReplacingOccurrencesOfString(" ", withString: "")).length > 1
{
if contact.phoneNumbers.count > 0
{
// Check if contacts already contains name/phone combination
if let phoneNumber: String = (contact.phoneNumbers[0].value as? CNPhoneNumber)?.stringValue
{
if contacts.contains({$0.phoneNumbers.count > 0 && ($0.phoneNumbers[0].value as? CNPhoneNumber)?.stringValue == phoneNumber}) &&
contacts.contains({($0.givenName + " " + $0.middleName + " " + $0.familyName) == name})
{ /* Contact with same name/phone combination already exists in array */ }
else { contacts.append(contact) }
}
}
}
おかげでビルド時間は約1/3に短縮されました。これを知っていれば、あなたは鎖の文字列に "+"を使用するでしょうか? – ohr
私は決して '+'を使用して文字列を結合しません。コンパイルに時間がかかるだけでなく、中間オブジェクトを作成する必要があるため、効率的ではありません。 –