                     setterConverter = nil
                     
                 case .TransformableAttributeType:
-                    // If your attribute is of NSTransformableAttributeType, the attributeValueClassName must be set or attribute value class must implement NSCopying.
-                    // TODO: implement
-                    fatalError()
+                    // Transformable only supports NSCopying instances
+                    rawAttribute = "\"NSData\""
+                    realmPropertyType = .Data
+                    getterConverter = { ($0 as? NSData).flatMap { NSKeyedUnarchiver.unarchiveObjectWithData($0) } }
+                    setterConverter = { $0.flatMap { NSKeyedArchiver.archivedDataWithRootObject($0) } }
                     
                 case .ObjectIDAttributeType: fallthrough
                 case .UndefinedAttributeType:

            var defaultValues: [String: AnyObject] = [
                RLMObject.RISVersionProperty: 0
            ]
            let properties = self.attributesByName.map { (attributeName, attributeDescription) -> (() -> RLMProperty) in
                
                let rawAttribute: NSString
                let realmPropertyType: RLMPropertyType

                toBackingClass: metaClass
            )
            
            if !defaultValues.isEmpty {
                
                NSEntityDescription.addGetterBlock(
