函数产生预期类型“String”,你的意思是用“()”来调用它
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" }
请注意,没有等号。 更完整的forms是:
var test: String { get { return "String" } }
- 适用于iOS移动Safari和iOS应用程序的唯一标识符
- 在closuresWebRTC库中的视图控制器的EXC_BAD_ACCESS错误时崩溃
- FBRequestConnection不起作用
- UIActionSheet / UIAlertController多行文本
- 未定义的build筑i386符号,为iOSbuild设?
- scrollToRowAtIndexPath在我的tableview被设置之前检查indexpath
- NSDateFormatter麻烦?
- Manifest.lock给出关于Podfile.lock的警告,是什么引起的?
- IOS – Swift – 向BarButtonItem的customView添加目标和操作