如何使用 NSNotification 将 sqlite.swift 的行传递给另一个控制器
How to pass Row of sqlite.swift to another controller using NSNotification
我在我的项目中使用 sqlite.swift。
let inputdata = row as Row
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail",object: inputdata)
过不了"inputdata"
inputdata 将是 AnyObject ,在我的例子中是 Row
所以它抛出错误,帮助我解决这个问题或告诉我将此行对象传递给另一个控制器的替代方法
你可以像这样通过 userInfo 传递它
let userInfo = [ "inputData" : inputdata ]
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail", object: nil, userInfo: userInfo)
并且您可以使用 userInfo
属性
从 NSNotification
对象中获取它
func handleNotification(notification: NSNotification){
print(notification.userInfo)
print(notification.userInfo!["inputData"])
}
如果 Row
是一个 struct
,首先你必须将它包装成一个 class 对象,然后你可以将 class 对象传递给这个函数。
创建包装器class
class Wrapper<T> {
var wrappedValue: T
init(theValue: T) {
wrappedValue = theValue
}
}
换行
let wrappedInputData = Wrapper(theValue: inputdata)
let userInfo = [ "inputData" : wrappedInputData ]
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail", object: nil, userInfo: userInfo)
取回您的输入数据
func handleNotification(notification: NSNotification){
print(notification.userInfo)
if let info = notification.userInfo {
if let wrappedInputData = info["inputData"] {
let inputData : Row = (wrappedInputData as? Wrapper)!.wrappedValue
print(inputData)
}
}
}
我在我的项目中使用 sqlite.swift。
let inputdata = row as Row
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail",object: inputdata)
过不了"inputdata"
inputdata 将是 AnyObject ,在我的例子中是 Row
所以它抛出错误,帮助我解决这个问题或告诉我将此行对象传递给另一个控制器的替代方法
你可以像这样通过 userInfo 传递它
let userInfo = [ "inputData" : inputdata ]
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail", object: nil, userInfo: userInfo)
并且您可以使用 userInfo
属性
NSNotification
对象中获取它
func handleNotification(notification: NSNotification){
print(notification.userInfo)
print(notification.userInfo!["inputData"])
}
如果 Row
是一个 struct
,首先你必须将它包装成一个 class 对象,然后你可以将 class 对象传递给这个函数。
创建包装器class
class Wrapper<T> {
var wrappedValue: T
init(theValue: T) {
wrappedValue = theValue
}
}
换行
let wrappedInputData = Wrapper(theValue: inputdata)
let userInfo = [ "inputData" : wrappedInputData ]
NSNotificationCenter.defaultCenter().postNotificationName("navigateToProductDetail", object: nil, userInfo: userInfo)
取回您的输入数据
func handleNotification(notification: NSNotification){
print(notification.userInfo)
if let info = notification.userInfo {
if let wrappedInputData = info["inputData"] {
let inputData : Row = (wrappedInputData as? Wrapper)!.wrappedValue
print(inputData)
}
}
}