“Type String不符合协议StringLiteralConvertible”

时间:2014-07-12 19:40:04

标签: swift

我是一名长期的Obj-C开发人员,但对于Swift来说,我和其他所有人一样,并且在这个问题上摸不着头脑。我正在尝试转换用Obj-C编写的旧教程。

我有一个像这样声明的“Animal”类:

class Animal
{
    let title: String
    let image: UIImage
    let creator: String

    init(title: String, image: UIImage, creator: String)
    {
       self.title = title
       self.image = image
       self.creator = creator
    }
}

在另一个类中,我想要一个Animal实例数组,它被声明为该类的属性,如下所示:

let animals: [Animal]

并且如此初始化(失败):

animals = [Animal(title: "Sleeping Cat", image: UIImage.imageNamed("ID-101.jpg") 
creator:"papaija2008"),
...
...
]

我在这个数组初始值设定项的第一行得到了一个构建错误,它的读取就像帖子的标题:“Type String不符合协议StringLiteralConvertible”。我们不能将字符串文字分配给String对象吗?这似乎不可能。我违反了什么规则以及如何解决这个问题?

提前致谢!

1 个答案:

答案 0 :(得分:3)

使用UIImage(named:)代替UIImage.imageNamed()对我有用:

let animals: [Animal] = [Animal(title: "Sleeping Cat", image: UIImage(named: "ID-101.jpg"), creator:"papaija2008")]

我希望它也适合你。