Change method name to avoid name collision

This commit is contained in:
kubo_takaichi 2015-05-26 10:59:55 +09:00
parent 02c41ac574
commit 7be35bb02e
5 changed files with 27 additions and 14 deletions

View File

@ -15,7 +15,7 @@ class {{projectName}}API {
class APIBase { class APIBase {
func toParameters(encodable: JSONEncodable?) -> [String: AnyObject]? { func toParameters(encodable: JSONEncodable?) -> [String: AnyObject]? {
let encoded: AnyObject? = encodable?.encode() let encoded: AnyObject? = encodable?.encodeToJSON()
if encoded! is [AnyObject] { if encoded! is [AnyObject] {
var dictionary = [String:AnyObject]() var dictionary = [String:AnyObject]()

View File

@ -8,41 +8,41 @@ import Alamofire
import PromiseKit import PromiseKit
extension Bool: JSONEncodable { extension Bool: JSONEncodable {
func encode() -> AnyObject { return self } func encodeToJSON() -> AnyObject { return self }
} }
extension Float: JSONEncodable { extension Float: JSONEncodable {
func encode() -> AnyObject { return self } func encodeToJSON() -> AnyObject { return self }
} }
extension Int: JSONEncodable { extension Int: JSONEncodable {
func encode() -> AnyObject { return self } func encodeToJSON() -> AnyObject { return self }
} }
extension Double: JSONEncodable { extension Double: JSONEncodable {
func encode() -> AnyObject { return self } func encodeToJSON() -> AnyObject { return self }
} }
extension String: JSONEncodable { extension String: JSONEncodable {
func encode() -> AnyObject { return self } func encodeToJSON() -> AnyObject { return self }
} }
private func encodeIfPossible<T>(object: T) -> AnyObject { private func encodeIfPossible<T>(object: T) -> AnyObject {
if object is JSONEncodable { if object is JSONEncodable {
return (object as! JSONEncodable).encode() return (object as! JSONEncodable).encodeToJSON()
} else { } else {
return object as! AnyObject return object as! AnyObject
} }
} }
extension Array: JSONEncodable { extension Array: JSONEncodable {
func encode() -> AnyObject { func encodeToJSON() -> AnyObject {
return self.map(encodeIfPossible) return self.map(encodeIfPossible)
} }
} }
extension Dictionary: JSONEncodable { extension Dictionary: JSONEncodable {
func encode() -> AnyObject { func encodeToJSON() -> AnyObject {
var dictionary = [NSObject:AnyObject]() var dictionary = [NSObject:AnyObject]()
for (key, value) in self { for (key, value) in self {
dictionary[key as! NSObject] = encodeIfPossible(value) dictionary[key as! NSObject] = encodeIfPossible(value)
@ -50,3 +50,16 @@ extension Dictionary: JSONEncodable {
return dictionary return dictionary
} }
} }
private let dateFormatter: NSDateFormatter = {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter
}()
extension NSDate: JSONEncodable {
func encodeToJSON() -> AnyObject {
return dateFormatter.stringFromDate(self)
}
}

View File

@ -7,7 +7,7 @@
import Foundation import Foundation
protocol JSONEncodable { protocol JSONEncodable {
func encode() -> AnyObject func encodeToJSON() -> AnyObject
} }
class Response<T> { class Response<T> {

View File

@ -35,7 +35,7 @@ extension {{projectName}}API {
path = path.stringByReplacingOccurrencesOfString("{{=<% %>=}}{<%paramName%>}<%={{ }}=%>", withString: "\({{paramName}})", options: .LiteralSearch, range: nil){{/pathParams}} path = path.stringByReplacingOccurrencesOfString("{{=<% %>=}}{<%paramName%>}<%={{ }}=%>", withString: "\({{paramName}})", options: .LiteralSearch, range: nil){{/pathParams}}
let url = {{projectName}}API.basePath + path let url = {{projectName}}API.basePath + path
{{#bodyParam}} {{#bodyParam}}
let parameters = {{paramName}}{{^required}}?{{/required}}.encode() as? [String:AnyObject]{{/bodyParam}}{{^bodyParam}} let parameters = {{paramName}}{{^required}}?{{/required}}.encodeToJSON() as? [String:AnyObject]{{/bodyParam}}{{^bodyParam}}
let nillableParameters: [String:AnyObject?] = {{^queryParams}}[:]{{/queryParams}}{{#queryParams}}{{^secondaryParam}}[{{/secondaryParam}} let nillableParameters: [String:AnyObject?] = {{^queryParams}}[:]{{/queryParams}}{{#queryParams}}{{^secondaryParam}}[{{/secondaryParam}}
"{{paramName}}": {{paramName}}{{#hasMore}},{{/hasMore}}{{^hasMore}} "{{paramName}}": {{paramName}}{{#hasMore}},{{/hasMore}}{{^hasMore}}
]{{/hasMore}}{{/queryParams}} ]{{/hasMore}}{{/queryParams}}

View File

@ -22,12 +22,12 @@ class {{classname}}: JSONEncodable {
{{/vars}} {{/vars}}
// MARK: JSONEncodable // MARK: JSONEncodable
func encode() -> AnyObject { func encodeToJSON() -> AnyObject {
var nillableDictionary = [String:AnyObject?](){{#vars}}{{#isNotContainer}}{{#isPrimitiveType}}{{^isEnum}} var nillableDictionary = [String:AnyObject?](){{#vars}}{{#isNotContainer}}{{#isPrimitiveType}}{{^isEnum}}
nillableDictionary["{{name}}"] = self.{{name}}{{/isEnum}}{{/isPrimitiveType}}{{#isEnum}} nillableDictionary["{{name}}"] = self.{{name}}{{/isEnum}}{{/isPrimitiveType}}{{#isEnum}}
nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.rawValue{{/isEnum}}{{^isPrimitiveType}} nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.rawValue{{/isEnum}}{{^isPrimitiveType}}
nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.encode(){{/isPrimitiveType}}{{/isNotContainer}}{{#isContainer}} nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.encodeToJSON(){{/isPrimitiveType}}{{/isNotContainer}}{{#isContainer}}
nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.encode(){{/isContainer}}{{/vars}} nillableDictionary["{{name}}"] = self.{{name}}{{^required}}?{{/required}}.encodeToJSON(){{/isContainer}}{{/vars}}
let dictionary: [String:AnyObject] = APIHelper.rejectNil(nillableDictionary) ?? [:] let dictionary: [String:AnyObject] = APIHelper.rejectNil(nillableDictionary) ?? [:]
return dictionary return dictionary
} }