@@ -205,3 +205,221 @@ class PaymentNetworkHelper {
205205 return address
206206 }
207207}
208+
209+ extension PKPayment : Encodable {
210+ public func encode( to encoder: Encoder ) throws {
211+ var container = encoder. container ( keyedBy: CodingKeys . self)
212+ try container. encode ( self . token, forKey: . token)
213+ try container. encode ( self . billingContact, forKey: . billingContact)
214+ try container. encode ( self . shippingContact, forKey: . shippingContact)
215+ try container. encode ( self . shippingMethod, forKey: . shippingMethod)
216+ }
217+
218+ enum CodingKeys : String , CodingKey {
219+ case token
220+ case billingContact
221+ case shippingContact
222+ case shippingAddress
223+ case billingAddress
224+ case shippingMethod
225+ }
226+ }
227+
228+ extension PKShippingMethod : Encodable {
229+ public func encode( to encoder: Encoder ) throws {
230+ var container = encoder. container ( keyedBy: CodingKeys . self)
231+ try container. encode ( self . identifier, forKey: . identifier)
232+ try container. encode ( self . detail, forKey: . detail)
233+ try container. encode ( self . label, forKey: . label)
234+ }
235+
236+ enum CodingKeys : String , CodingKey {
237+ case identifier
238+ case detail
239+ case label
240+ }
241+ }
242+
243+ extension PKPaymentToken : Encodable {
244+ public func encode( to encoder: Encoder ) throws {
245+ var container = encoder. container ( keyedBy: CodingKeys . self)
246+ try container. encode ( self . paymentMethod, forKey: . paymentMethod)
247+ try container. encode ( self . paymentData, forKey: . paymentData)
248+ try container. encode ( self . transactionIdentifier, forKey: . transactionIdentifier)
249+ }
250+
251+ enum CodingKeys : String , CodingKey {
252+ case paymentNetwork
253+ case paymentMethod
254+ case paymentData
255+ case paymentInstrumentName
256+ case transactionIdentifier
257+ }
258+ }
259+
260+ extension PKPaymentMethod : Encodable {
261+ public func encode( to encoder: Encoder ) throws {
262+ var container = encoder. container ( keyedBy: CodingKeys . self)
263+ if #available( iOS 13 . 0 , * ) {
264+ try container. encode ( self . billingAddress, forKey: . billingAddress)
265+ }
266+ try container. encode ( self . displayName, forKey: . displayName)
267+ try container. encode ( self . network? . rawValue, forKey: . network)
268+ try container. encode ( self . paymentPass, forKey: . paymentPass)
269+ if #available( iOS 13 . 4 , * ) {
270+ try container. encode ( self . secureElementPass, forKey: . secureElementPass)
271+ }
272+ try container. encode ( self . type. rawValue, forKey: . type)
273+ }
274+
275+ enum CodingKeys : String , CodingKey {
276+ case billingAddress
277+ case displayName
278+ case network
279+ case paymentPass
280+ case secureElementPass
281+ case type
282+ }
283+ }
284+
285+
286+ @available ( iOS 13 . 4 , * )
287+ extension PKSecureElementPass : Encodable {
288+ public func encode( to encoder: Encoder ) throws {
289+ var container = encoder. container ( keyedBy: CodingKeys . self)
290+ try container. encode ( self . secureElementPass, forKey: . secureElementPass)
291+ try container. encode ( self . paymentPass, forKey: . paymentPass)
292+ }
293+
294+ enum CodingKeys : String , CodingKey {
295+ case secureElementPass
296+ case paymentPass
297+ }
298+ }
299+
300+ extension PKContact : Encodable {
301+ public func encode( to encoder: Encoder ) throws {
302+ var container = encoder. container ( keyedBy: CodingKeys . self)
303+ try container. encode ( self . name, forKey: . name)
304+ if #available( iOS 9 . 2 , * ) {
305+ try container. encode ( self . supplementarySubLocality, forKey: . supplementarySubLocality)
306+ }
307+ try container. encode ( self . postalAddress, forKey: . postalAddress)
308+ try container. encode ( self . phoneNumber, forKey: . phoneNumber)
309+ try container. encode ( self . emailAddress, forKey: . emailAddress)
310+ }
311+
312+ enum CodingKeys : String , CodingKey {
313+ case name
314+ case supplementarySubLocality
315+ case postalAddress
316+ case phoneNumber
317+ case emailAddress
318+ }
319+ }
320+
321+ extension CNPostalAddress : Encodable {
322+ public func encode( to encoder: Encoder ) throws {
323+ var container = encoder. container ( keyedBy: CodingKeys . self)
324+ if #available( iOS 10 . 3 , * ) {
325+ try container. encode ( self . subLocality, forKey: . subLocality)
326+ try container. encode ( self . subAdministrativeArea, forKey: . subAdministrativeArea)
327+ }
328+ try container. encode ( self . street, forKey: . street)
329+ try container. encode ( self . state, forKey: . state)
330+ try container. encode ( self . postalCode, forKey: . postalCode)
331+ try container. encode ( self . isoCountryCode, forKey: . isoCountryCode)
332+ try container. encode ( self . country, forKey: . country)
333+ try container. encode ( self . city, forKey: . city)
334+ }
335+
336+ enum CodingKeys : String , CodingKey {
337+ case subLocality
338+ case subAdministrativeArea
339+ case street
340+ case state
341+ case postalCode
342+ case isoCountryCode
343+ case country
344+ case city
345+ }
346+ }
347+
348+ extension CNPhoneNumber : Encodable {
349+ public func encode( to encoder: Encoder ) throws {
350+ var container = encoder. container ( keyedBy: CodingKeys . self)
351+ try container. encode ( self . stringValue, forKey: . stringValue)
352+ }
353+
354+ enum CodingKeys : String , CodingKey {
355+ case stringValue
356+ }
357+ }
358+
359+ extension CNContact : Encodable {
360+ public func encode( to encoder: Encoder ) throws {
361+ var container = encoder. container ( keyedBy: CodingKeys . self)
362+ try container. encode ( self . identifier, forKey: . identifier)
363+ try container. encode ( self . contactType. rawValue, forKey: . contactType)
364+ try container. encode ( self . namePrefix, forKey: . namePrefix)
365+ try container. encode ( self . givenName, forKey: . givenName)
366+ try container. encode ( self . middleName, forKey: . middleName)
367+ try container. encode ( self . familyName, forKey: . familyName)
368+ try container. encode ( self . previousFamilyName, forKey: . previousFamilyName)
369+ try container. encode ( self . nameSuffix, forKey: . nameSuffix)
370+ try container. encode ( self . nickname, forKey: . nickname)
371+ try container. encode ( self . organizationName, forKey: . organizationName)
372+ try container. encode ( self . departmentName, forKey: . departmentName)
373+ try container. encode ( self . jobTitle, forKey: . jobTitle)
374+ try container. encode ( self . phoneticGivenName, forKey: . phoneticGivenName)
375+ try container. encode ( self . phoneticMiddleName, forKey: . phoneticMiddleName)
376+ try container. encode ( self . phoneticFamilyName, forKey: . phoneticFamilyName)
377+ try container. encode ( self . note, forKey: . note)
378+ try container. encode ( self . imageData, forKey: . imageData)
379+ try container. encode ( self . thumbnailImageData, forKey: . thumbnailImageData)
380+ try container. encode ( self . imageDataAvailable, forKey: . imageDataAvailable)
381+ // try container.encode(self.phoneNumbers, forKey: .phoneNumbers)
382+ // try container.encode(self.emailAddresses, forKey: .emailAddresses)
383+ // try container.encode(self.postalAddresses, forKey: .postalAddresses)
384+ // try container.encode(self.urlAddresses, forKey: .urlAddresses)
385+ // try container.encode(self.contactRelations, forKey: .contactRelations)
386+ // try container.encode(self.socialProfiles, forKey: .socialProfiles)
387+ // try container.encode(self.instantMessageAddresses, forKey: .instantMessageAddresses)
388+ try container. encode ( self . birthday, forKey: . birthday)
389+ try container. encode ( self . nonGregorianBirthday, forKey: . nonGregorianBirthday)
390+ // try container.encode(self.dates, forKey: .dates)
391+ }
392+
393+ enum CodingKeys : String , CodingKey {
394+ case identifier
395+ case contactType
396+ case namePrefix
397+ case givenName
398+ case middleName
399+ case familyName
400+ case previousFamilyName
401+ case nameSuffix
402+ case nickname
403+ case organizationName
404+ case departmentName
405+ case jobTitle
406+ case phoneticGivenName
407+ case phoneticMiddleName
408+ case phoneticFamilyName
409+ case phoneticOrganizationName
410+ case note
411+ case imageData
412+ case thumbnailImageData
413+ case imageDataAvailable
414+ case phoneNumbers
415+ case emailAddresses
416+ case postalAddresses
417+ case urlAddresses
418+ case contactRelations
419+ case socialProfiles
420+ case instantMessageAddresses
421+ case birthday
422+ case nonGregorianBirthday
423+ case dates
424+ }
425+ }
0 commit comments