Параметр object
в функции, которую вы используете, является отправителем, объект отправляет уведомление, а не параметр. Ознакомьтесь с документами here.
Вы должны поместить значение перечисления, которое требуется передать в качестве параметра в информации пользователя словаря и использовать следующий метод:
func postNotificationName(_ aName: String,
object anObject: AnyObject?,
userInfo aUserInfo: [NSObject : AnyObject]?)
В вашем случае:
let userInfo = ["RuleError" : RuleError.Create.rawValue]
NSNotificationCenter.defaultCenter().postNotificationName("RuleFailNotification",
object: self,
userInfo:userInfo)
И обрабатывать уведомление, первый регистр для него:
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "handleRuleFailNotification:",
name: "RuleFailNotification",
object: nil)
Затем справиться с этим:
func handleRuleFailNotification(notification: NSNotification) {
let userInfo = notification.userInfo
RuleError(rawValue: userInfo!["RuleError"] as! String)
}
Это досадная необходимость. Уведомления активируют перечисления и структуры во второй класс. Я чувствую, что это серьезный недостаток в Swift, поскольку Enums часто являются только ограниченным Int или String, и все же они хороши как ценность. – BaseZen