如何在 Swift 中使用 NSNotification -> userInfo 发送对象数组

Posted

技术标签:

【中文标题】如何在 Swift 中使用 NSNotification -> userInfo 发送对象数组【英文标题】:how to send array of objects using NSNotification -> userInfo in Swift 【发布时间】:2015-09-02 13:26:21 【问题描述】:

userInfo 只发送 anyObject 类型的数据,所以我需要转换我的 Meals 数组 到anyObject 没有崩溃然后将其重铸为[Meal],不幸的是它在这里崩溃了......

var anyOrder =  NSMutableArray()
    for meal in ordered  // ordered is array of meals [Meal] ...
        anyOrder.addObject(meal as! AnyObject) //crashes here 
    

我希望能够使用 userInfoNSNotification 中投射或找到任何其他方式发送它,提前致谢

【问题讨论】:

为什么需要将 Meal 转为 AnyObject ?没有那个箱子你就不能送那个饭菜吗? Meal 是一个结构体吗? userInfo 只接受 AnyObject 变量 NSMutableArrays 只能保存对象。结构不是对象。 【参考方案1】:

我想知道餐食的种类。

如果 Meal 继承 AnyObject,您可以轻松地进行转换。

class Meal: AnyObject 
    // something


var ordered = [Meal(), Meal()]

var anyOrder =  NSMutableArray()
for meal in ordered 
    anyOrder.addObject(meal as AnyObject)

如果不是这样,Meal 是否可以转换 AnyObject 取决于继承者。 考虑到崩溃,你没有施放它。所以会发生运行时错误。

【讨论】:

以上是关于如何在 Swift 中使用 NSNotification -> userInfo 发送对象数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在OC中使用Swift如何在Swift中使用OC

如何在 swift 3.0 中编写此代码,特别是如何在 swift3 中使用宏?

如何在 kotlin native 中使用 swift 库?

如何在 Swift 中使用 Apple 地图 - 你必须使用 C 还是 Swift 可以?

如何在 Swift 中使用 MKPolylineView

如何在 Swift 中使用`syslog`