当我在setObject
上致电NSUserDefaults
时,它需要forKey:
才能进行编译。但是,在objectForKey
之类的其他方法之前我不需要任何东西。那是为什么?
这有效:
NSUserDefaults.standardUserDefaults().setObject(myString, forKey: "myString")
这不是:
NSUserDefaults.standardUserDefaults().setObject(myString, "myString")
这不需要xxx:在第一个参数前面:
NSUserDefaults.standardUserDefaults().objectForKey("myString")
如何知道何时在参数前提供前缀xxx和冒号?除了依赖Xcode的自动完成或编译错误?
答案 0 :(得分:1)
当我在NSUserDefaults上调用setObject时,它需要一个forKey:才能编译。但是在其他方法之前我不需要任何东西,比如objectForKey。那是为什么?
Objective-C方法是:
-setObject:forKey:
它需要两个参数 - 对象和一个键。另一方面,objectForKey:
只接受一个参数(键)并返回一个对象。
如何知道何时在参数前提供前缀xxx和冒号?除了依赖Xcode的自动完成或编译错误?
您需要知道您正在调用的方法。你可以看一下。例如,NSUserDefaults文档提供了所需方法的Swift原型:
func setObject(_ value: AnyObject?,
forKey defaultName: String)
或者,如果你碰巧知道Objective-C原型
- (void)setObject:(id)value
forKey:(NSString *)defaultName
不需要花很长时间就能掌握转变的想法。
答案 1 :(得分:1)
在swift函数中,不需要第一个参数标签(init
方法除外)。因此,如果函数只有一个参数,则不需要指定参数标签。这就是为什么objectForKey:
没有任何标签的情况。 setObject:forKey:
需要两个参数,因此第二个参数需要一个标签。
默认情况下,第一个参数省略其外部名称,而 第二个和后续参数使用其本地名称作为他们的 外部名称。所有参数必须具有唯一的本地名称。虽然 多个参数可以具有相同的外部名称, 独特的外部名称有助于提高代码的可读性。
答案 2 :(得分:1)
如果我理解你的问题, 通常,在将参数传递给函数时,不需要包含第一个参数名称。
{{1}}
默认情况下,第一个参数省略其外部名称,而 第二个和后续参数使用其本地名称作为他们的 外部名称。所有参数必须具有唯一的本地名称。虽然 多个参数可以具有相同的外部名称, 独特的外部名称有助于提高代码的可读性。
希望这会有所帮助。 你可以在这里读更多关于它的内容: Function Parameter Naming in Swift
答案 3 :(得分:0)
方法/功能签名
。