ios - 函数产生预期类型 "String",你的意思是用 "()"调用它吗

标签 ios swift

let documentUrl: NSURL? = {
    return NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first
}

var test: String = {
    return "String"
}

这是一段非常简单的代码,但是 Xcode 出现错误,要求我在计算属性的末尾添加 (),如下所示:

let documentUrl: NSURL? = {
        return NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first
    }()

var test: String = {
            return "String"
        }()

谁能告诉我为什么?

最佳答案

你写了这个:

var test: String = {
    return "String"
}

不是计算属性。您正在将变量 test 初始化为函数体(匿名函数,有时称为闭包)。那不是你的意思。您想要调用 函数并将变量test 设置为结果。括号使它发生;这就是您调用函数的方式。因此:

var test: String = {
    return "String"
}()

这样你就定义了函数并调用它,所有这些都是一步到位的,并将结果赋给test的初始值。

如果你想要一个计算属性,你应该这样写:

var test: String {
    return "String"
}

注意没有等号。更完整的形式是:

var test: String {
    get {
        return "String"
    }
}

关于ios - 函数产生预期类型 "String",你的意思是用 "()"调用它吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749231/

相关文章:

ios 核心数据 - 将实体记录复制到另一个实体

IOS、AVCam,如何预览拍摄的图像?

ios - 如何在按下 CollectionViewCell 内的按钮后呈现 ViewController

ios - 如何在单元格中保存复选标记附件

swift - 焦点引擎不适用于 Collection View 单元格

ios - 应用程序协同设计验证失败 - 非法 key aps-环境

ios - CloudKit iOS 如何设置世界写入权限

ios - NSPredicate 不返回任何获取请求的结果,适用于数组过滤

ios - 快速创建头文件和实现文件

swift - 未使用选择器操作调用函数