No Description

NSValueTransformer+AWSMTLPredefinedTransformerAdditions.h 4.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //
  2. // NSValueTransformer+MTLPredefinedTransformerAdditions.h
  3. // Mantle
  4. //
  5. // Created by Justin Spahr-Summers on 2012-09-27.
  6. // Copyright (c) 2012 GitHub. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. void awsmtl_loadMTLPredefinedTransformerAdditions(void);
  10. // The name for a value transformer that converts strings into URLs and back.
  11. extern NSString * const AWSMTLURLValueTransformerName;
  12. // Ensure an NSNumber is backed by __NSCFBoolean/CFBooleanRef
  13. //
  14. // NSJSONSerialization, and likely other serialization libraries, ordinarily
  15. // serialize NSNumbers as numbers, and thus booleans would be serialized as
  16. // 0/1. The exception is when the NSNumber is backed by __NSCFBoolean, which,
  17. // though very much an implementation detail, is detected and serialized as a
  18. // proper boolean.
  19. extern NSString * const AWSMTLBooleanValueTransformerName;
  20. @interface NSValueTransformer (AWSMTLPredefinedTransformerAdditions)
  21. // Creates a reversible transformer to convert a JSON dictionary into a MTLModel
  22. // object, and vice-versa.
  23. //
  24. // modelClass - The MTLModel subclass to attempt to parse from the JSON. This
  25. // class must conform to <MTLJSONSerializing>. This argument must
  26. // not be nil.
  27. //
  28. // Returns a reversible transformer which uses MTLJSONAdapter for transforming
  29. // values back and forth.
  30. + (NSValueTransformer *)awsmtl_JSONDictionaryTransformerWithModelClass:(Class)modelClass;
  31. // Creates a reversible transformer to convert an array of JSON dictionaries
  32. // into an array of MTLModel objects, and vice-versa.
  33. //
  34. // modelClass - The MTLModel subclass to attempt to parse from each JSON
  35. // dictionary. This class must conform to <MTLJSONSerializing>.
  36. // This argument must not be nil.
  37. //
  38. // Returns a reversible transformer which uses MTLJSONAdapter for transforming
  39. // array elements back and forth.
  40. + (NSValueTransformer *)awsmtl_JSONArrayTransformerWithModelClass:(Class)modelClass;
  41. // A reversible value transformer to transform between the keys and objects of a
  42. // dictionary.
  43. //
  44. // dictionary - The dictionary whose keys and values should be
  45. // transformed between. This argument must not be nil.
  46. // defaultValue - The result to fall back to, in case no key matching the
  47. // input value was found during a forward transformation.
  48. // reverseDefaultValue - The result to fall back to, in case no value matching
  49. // the input value was found during a reverse
  50. // transformation.
  51. //
  52. // Can for example be used for transforming between enum values and their string
  53. // representation.
  54. //
  55. // NSValueTransformer *valueTransformer = [NSValueTransformer awsmtl_valueMappingTransformerWithDictionary:@{
  56. // @"foo": @(EnumDataTypeFoo),
  57. // @"bar": @(EnumDataTypeBar),
  58. // } defaultValue: @(EnumDataTypeUndefined) reverseDefaultValue: @"undefined"];
  59. //
  60. // Returns a transformer that will map from keys to values in dictionary
  61. // for forward transformation, and from values to keys for reverse
  62. // transformations. If no matching key or value can be found, the respective
  63. // default value is returned.
  64. + (NSValueTransformer *)awsmtl_valueMappingTransformerWithDictionary:(NSDictionary *)dictionary defaultValue:(id)defaultValue reverseDefaultValue:(id)reverseDefaultValue;
  65. // Returns a value transformer created by calling
  66. // `+mtl_valueMappingTransformerWithDictionary:defaultValue:reverseDefaultValue:`
  67. // with a default value of `nil` and a reverse default value of `nil`.
  68. + (NSValueTransformer *)awsmtl_valueMappingTransformerWithDictionary:(NSDictionary *)dictionary;
  69. @end
  70. @interface NSValueTransformer (UnavailableAWSMTLPredefinedTransformerAdditions)
  71. + (NSValueTransformer *)awsmtl_externalRepresentationTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONDictionaryTransformerWithModelClass:")));
  72. + (NSValueTransformer *)awsmtl_externalRepresentationArrayTransformerWithModelClass:(Class)modelClass __attribute__((deprecated("Replaced by +mtl_JSONArrayTransformerWithModelClass:")));
  73. @end