我正在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
我只是不明白为什么。在网络上四处查看显示了此错误的许多情况,但在此上下文中没有一个或有助于解决此问题。
如何摆脱此错误?任何帮助都将受到高度赞赏
答案 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的答案就足够了。