func return不返回我符合协议StringLiteralConvertible错误的字符串

时间:2015-04-01 06:26:41

标签: ios string swift

我的类有一个返回路径的func到某个文件:

func getArchivePathFor(fileName: String!) -> String {
        var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String     
        var path: String = paths.stringByAppendingPathComponent(fileName!)
        return path    
    }

但是当我尝试在我的代码中使用它时:

let val = Helpers.getArchivePathFor("MyList.plist")

我收到错误:"我的func返回的返回字符串不符合协议StringLiteralConvertible错误"。为什么这样?

3 个答案:

答案 0 :(得分:1)

您正在声明一个实例方法,而Helpers.getArchivePathFor("MyList.plist")正在调用一个类方法。

如果要声明类方法,请尝试使用前缀class

class Helpers {
    class func getArchivePathFor(fileName: String!) -> String {
    ^^^^^

答案 1 :(得分:1)

在这种情况下,错误消息非常容易引起误解。您似乎使用getArchivePathFor作为类函数。但它被声明为实例函数。尝试:

class func getArchivePathFor(fileName: String!) -> String {
    ...
}

答案 2 :(得分:0)

试试这个

struct  Helper 
{
static func getArchivePathFor(fileName: String!) -> String 
{
    var paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
    var path: String = paths.stringByAppendingPathComponent(fileName!)
    return path
}
}