Swift : missing argument label 'xxx' in call
One possible reason is that it is actually a method. Methods are very sneaky, they look just like regular functions, but they don't act the same way, let's look at this:
func funFunction(someArg: Int, someOtherArg: Int) {
println("funFunction: \(someArg) : \(someOtherArg)")
}
// No external parameter
funFunction(1, 4)
func externalParamFunction(externalOne internalOne: Int, externalTwo internalTwo: Int) {
println("externalParamFunction: \(internalOne) : \(internalTwo)")
}
// Requires external parameters
externalParamFunction(externalOne: 1, externalTwo: 4)
func externalInternalShared(#paramOne: Int, #paramTwo: Int) {
println("externalInternalShared: \(paramOne) : \(paramTwo)")
}
// The '#' basically says, you want your internal and external names to be the same
// Note that there's been an update in Swift 2 and the above function would have to be written as:
func externalInternalShared(paramOne paramOne: Int, #paramTwo: Int) {
print("externalInternalShared: \(paramOne) : \(paramTwo)")
}
externalInternalShared(paramOne: 1, paramTwo: 4)
Now here's the fun part, declare a function inside of a class and it's no longer a function ... it's a method
class SomeClass {
func someClassFunctionWithParamOne(paramOne: Int, paramTwo: Int) {
println("someClassFunction: \(paramOne) : \(paramTwo)")
}
}
var someInstance = SomeClass()
someInstance.someClassFunctionWithParamOne(1, paramTwo: 4)
This is part of the design of behavior for methods
Apple Docs:
Specifically, Swift gives the first parameter name in a method a local parameter name by default, and gives the second and subsequent parameter names both local and external parameter names by default. This convention matches the typical naming and calling convention you will be familiar with from writing Objective-C methods, and makes for expressive method calls without the need to qualify your parameter names.
Notice the autocomplete:
Swift error: missing argument label 'name:' in call
Swift functions can specify local and external argument names:
func greet(who name: String = "world") {
println("hello \(name)")
}
// prints "hello world"
greet()
// prints "hello jiaaro"
greet(who:"jiaaro")
// error
greet("jiaaro")
// error
greet(name: "jiaaro")
To opt out of this behavior you can use an underscore for the external name. Note that the first parameter implicitly uses the "no external name" behavior:
func greet(name: String = "world", _ hello: String = "hello") {
println("\(hello) \(name)")
}
// prints "hello world"
greet()
// prints "hello jiaaro"
greet("jiaaro")
// prints "hi jiaaro"
greet("jiaaro", "hi")
// error
greet(name: "jiaaro")
The following is now disallowed in Swift 2.0, see below for equivalent code.
You can use the #
prefix to use the same local and external name for the first parameter:
func greet(#name: String = "world", hello: String = "hello") {
println("\(hello) \(name)")
}
// prints "hi jiaaro"
greet(name: "jiaaro", hello: "hi")
Swift 2.0 code:
func greet(name name: String = "world", hello: String = "hello") {
println("\(hello) \(name)")
}
// prints "hi jiaaro"
greet(name: "jiaaro", hello: "hi")
Swift Contains Array Error: Missing argument label 'where:' in call
The error is a bit misleading. array(forKey
returns [Any]?
so you have to cast the object to the expected type to ensure that the type conforms to Equatable
if let items = UserDefaults.standard.array(forKey: "purchasedItems") as? [Int] {
if items.contains(1) {
print("works!")
}
}
Converting swift 1.2 code to swift 2: Missing argument label in call
Change:
let base64EncodedString = utf8str?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(0))
to:
let base64EncodedString = utf8str?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
Swift and Firebase Database - Missing argument label 'andPriority' in call
There is a missing ) after the block
self.ref.child("users").child(user?.user.uid).setValue(newUserInfo, withCompletionBlock: { (error, ref) in
print("New User Saved")
}
Add ) at the end, like this
self.ref.child("users").child(user?.user.uid).setValue: newUserInfo, withCompletionBlock: { (error, ref) in
print("New User Saved")
})
Hope it helps
Related Topics
How to Get Current Longitude and Latitude Using Cllocationmanager-Swift
In Swift: Difference Between Array VS Nsarray VS [Anyobject]
"Interfaceorientation" Is Deprecated in iOS 8, How to Change This Method Objective C
How to Cache Resources Loaded in an iPhone Uiwebview
Cannot Create Outlet Connections to Subviews in Interface Builder (Xcode 5)
How to Check If Device Can Make a Phone Call (iOS 8)
Creating Thumbnail for Video in iOS
Using Collectionview in Uiview with Xib File
Hide Navigationbar When Scrolling Tableview in Collectionview
Using Core Data with Watchos 2.0
Nsattributedstring Inserting a Bullet Point
How to Add Buttons to Navigation Controller Visible After Segueing
Create and Store PDF Document Programmatically Using Swift for iOS
How to Rotate an Uiimageview by 20 Degrees
Autolayout Multiline Uilabel Cutting Off Some Text