String不符合NSarray Swift中的AnyObject类型

时间:2014-11-19 14:51:19

标签: ios swift nsarray

我正在swift中创建一个自定义对象。该对象的一个​​属性是一个数组,意味着包含字符串:

Exersice (name: "Test", type: "Test", muscles: NSArray(objects: "muscle1", "muscle2"), descriptionString: "Test", pace: true, sets: 1, reps: NSMutableArray(15, 12, 12), time: false, duration: 0)

这是问题的一部分:

muscles: NSArray(objects: "muscle1", "muscle2")

我继续收到错误:

String does not conform to type AnyObject

我只是不明白为什么。在网络上四处查看显示了此错误的许多情况,但在此上下文中没有一个或有助于解决此问题。

如何摆脱此错误?任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分:2)

NSArray只能保存引用类型,而Swift的String是值类型。字符串实例通常会自动桥接到NSString,但是您用于NSArray的构造函数明确地期望AnyObject,因此这种桥接失败了。您应该能够使用Swift Array代替:

Exersice (name: "Test", type: "Test", muscles: ["muscle1", "muscle2"], ...

答案 1 :(得分:2)

这里的问题不是NSArray(objects: "muscle1", "muscle2"),而是:

NSMutableArray(15, 12, 12)

这应该是

NSMutableArray(objects: 15, 12, 12)

但是,正如@NateCook在回答中所说,你应该使用Swift Array

答案 2 :(得分:0)

如果您的Exercise类仍然需要一个String数组,那么请确保初始化程序声明它需要一个字符串数组

init(name: String, type: String, muscles: [String]) {}

然后Nate的答案就足够了。