             //print("nameProperty = \(nameProperty.asArray())")
             
         case PropertyName.nickname.rawValue:
-            let nicknameProperty = NicknameProperty(value: property[PropertyIndex.value.rawValue].stringValue)
-            card.nickname = nicknameProperty
+            let nicknames = property[PropertyIndex.value.rawValue]
+            var values = [String]()
+            if nicknames.type == .string {
+                values.append(nicknames.string!)
+            }
+            else if nicknames.type == .array {
+                for n in nicknames.array! {
+                    values.append(n.string!)
+                }
+            }
+            card.nickname = NicknameProperty(values: values)
             
         case PropertyName.birthday.rawValue:
             // Because the iOS contacts only store the date (and not the time)

        arr.append(name as AnyObject)
        arr.append(unravelParameters(parameters: self.parameters) as AnyObject)
        arr.append(valueType as AnyObject)
        arr.append(value)
        return arr
    }
}

    }
}

public struct NicknameProperty: StructuredValueProperty {
    var name: String
    var parameters: [String: [String]]
    var valueType: String
    var value: [String]
    
    init(values: [String]) {
        name = PropertyName.nickname.rawValue
        parameters = [String: [String]]()
        valueType = PropertyValueType.text.rawValue
        value = values
    }
    
    func asArray() -> [AnyObject] {
