Skip to content

Instantly share code, notes, and snippets.

@leoneparise
leoneparise / ShareViewController.swift
Created December 6, 2016 13:58
Share View Controller Code
//
// ShareViewController.swift
// Kuoter
//
// Created by Leone Parise Vieira da Silva on 23/09/16.
// Copyright © 2016 Kuoter. All rights reserved.
//
import UIKit
import RxSwift
@leoneparise
leoneparise / SavedImagesViewController.swift
Created December 6, 2016 14:07
Saved Images View Controller
//
// SavedImagesViewController.swift
// Kuoter
//
// Created by Leone Parise Vieira da Silva on 01/10/16.
// Copyright © 2016 Kuoter. All rights reserved.
//
import UIKit
import RxDataSources
protocol NotificationType {
var name: Notification.Name { get }
static var name: Notification.Name { get }
var userInfo: [AnyHashable : Any] { get }
init?(notification: Notification?)
}
struct Notifications { }
protocol NotificationType {
/// Notification name
var name: Notification.Name { get }
/// Notification name
static var name: Notification.Name { get }
/// Notification parameters
var userInfo:[AnyHashable : Any] { get }
struct Notifications { }
extension NotificationCenter {
func post(_ notification:NotificationType, object:Any? = nil) {
post(name: notification.name, object: object, userInfo: notification.userInfo)
}
func addObserver<T:NotificationType>(forType type: T.Type, object obj: Any? = nil, queue: OperationQueue? = nil,
using block: @escaping (T?) -> Swift.Void) -> NSObjectProtocol {
return addObserver(forName: type.name, object: obj, queue: queue) {
block( type.init(notification: $0) )
}
extension Notifications {
struct openUserProfile:NotificationType {
var userId:String
static var name: Notification.Name {
return Notification.Name(“LP_openUserProfile”)
}
var name:Notification.Name {
return openUserProfile.name
NotificationCenter.default.post(Notifications.openUserProfile(userId:"someId"))
let NC = NotificationCenter.default
let openUserProfileObserver = NC.addObserver(forType: Notifications.openUserProfile.self) { notification in
print(notification.userId)
}
protocol RemoteNotificationType: NotificationType {
var title:String? { get }
var alert:String? { get }
init?(userInfo: [AnyHashable : Any ])
}