2016-11-19 2 views
0

Ich bin ein Array von CNContact hat und ich sie mit dieser Funktion sortieren:Wörterbuch hat optionale Schlüssel

for contact in self.contacts { 

    var contactName = contact.organizationName 

    let key: String = String(contactName.characters.first).uppercaseString 
    if let arrayForLetter = self.contactDictionary[key] { 
     self.contactDictionary[key]!.append(contact) 
     self.contactDictionary.updateValue(arrayForLetter, forKey: key) 
    } else { 
     self.contactDictionary.updateValue([contact], forKey: key) 
    } 
} 

self.keys = self.contactDictionary.keys.sort() 

Wo contactDictionary vom Typ:

var contactDictionary: [String: [CNContact]] = [String: [CNContact]]() 
var keys: [String] = [] 

Nun, wenn ich die contactDictionary sehen, wenn es ist gefüllt, es funktioniert, außer der Schlüssel immer Optional(\"T"\") oder ein anderer Brief natürlich. Aber warum ist es optional? Der Schlüssel im Forloop ist nicht optional, also wie kommt das?

+1

'first' Eigenschaft der Sammlung ist von optionalem Typ, so erhalten Sie optional wahrscheinlich hier' contactName.characters.first' Überprüfen Sie einmal. –

+0

Danke, das hat das Problem behoben. – user1007522

+0

Natürlich würde ich. Gehen Sie geradeaus. – user1007522

Antwort

1

first Eigenschaft Collection optionaler Typ ist, also Sie bekommen wahrscheinlich hier contactName.characters.first optional, wenn Sie es if let oder guard Willen mit eingewickelt gelöst Ihr Problem.

if let fc = name.characters.first { 
    let key = String(fc).uppercaseString 
} 
0

Versuchen Sie, auf diese Weise zu tun:

for contact in self.contacts { 
    var contactName = contact.organizationName 

    if let key = String(contactName.characters.first).uppercaseString { 
     if let arrayForLetter = self.contactDictionary[key] { 
      self.contactDictionary[key]!.append(contact) 
      self.contactDictionary.updateValue(arrayForLetter, forKey: key) 
     } else { 
      self.contactDictionary.updateValue([contact], forKey: key) 
     } 
    } 
} 

self.keys = self.contactDictionary.keys.sort() 
Verwandte Themen