检查 nil 参数以及该参数是否为 Swift 中的空字符串
Checking for nil parameter and if that parameter is an empty string in Swift
写这个可能有也可能没有更简单的方法,但我觉得自己是 Swift 的新手,我可能遗漏了一些东西。我有一个方法的参数 (fileName),它是一个可选的 String?
我需要检查它是否是 nil
,或者它是否是一个空字符串。这是我的代码,它工作正常,但它似乎可以多一点 concise/readable.
func writeFile(fileName: String?, withContents contents: String, errorCallback failureCallback: RCTResponseSenderBlock, callback successCallback: RCTResponseSenderBlock) -> Void {
// If fileName has a value -- is not nil
if let fileName = fileName {
// Check to see if the string isn't empty
if count(fileName) < 1 {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
// else, fileName is nil, and should return the same error message.
} else {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
}
你的方法是对的。您需要做的就是将您的 IF 语句合并为一行:
func writeFile(fileName: String?, withContents contents: String, errorCallback failureCallback: RCTResponseSenderBlock, callback successCallback: RCTResponseSenderBlock) -> Void {
// Check if fileName is nil or empty
if (fileName == nil) || (fileName != nil && count(fileName!) < 1) {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
// Perform code here since fileName has a value and is not empty
}
此代码首先检查 fileName
是否为 nil
。如果是这样,它将进入失败块。如果不是,则进入第二个条件。在第二个条件中,如果 fileName
有值且为空,它将进入失败块。只有当fileName
有值且不为空时才会跳过失败块。
怎么样
首先创建一个可选的nil字符串来设置示例
var 文件名:字符串?
现在的代码可以让您在一行中查看文件名是否为 nil/empty:
if (fileName ?? "").isEmpty
{
println("empty")
}
else
{
println("not empty")
}
这里使用了??
,Swift“nil coalescing operator”。 (link)
对于表达式:
a ?? b
其中 a
是可选的,它表示:
如果 a 不为零,return a。如果 a 为零,则 return b 代替。
所以
if (fileName ?? "").isEmpty
说
首先,评估文件名并查看它是否为零。如果是这样,请将其替换为空字符串。
接下来,检查结果是否为空。
您可以将 if let
和 if
语句组合成这样:
if let str = fileName where !str.isEmpty {
println(str)
} else {
println("empty")
}
如果您需要在检查文件名是 nil
还是空文件后使用该文件名,这种方法很有用。
写这个可能有也可能没有更简单的方法,但我觉得自己是 Swift 的新手,我可能遗漏了一些东西。我有一个方法的参数 (fileName),它是一个可选的 String?
我需要检查它是否是 nil
,或者它是否是一个空字符串。这是我的代码,它工作正常,但它似乎可以多一点 concise/readable.
func writeFile(fileName: String?, withContents contents: String, errorCallback failureCallback: RCTResponseSenderBlock, callback successCallback: RCTResponseSenderBlock) -> Void {
// If fileName has a value -- is not nil
if let fileName = fileName {
// Check to see if the string isn't empty
if count(fileName) < 1 {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
// else, fileName is nil, and should return the same error message.
} else {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
}
你的方法是对的。您需要做的就是将您的 IF 语句合并为一行:
func writeFile(fileName: String?, withContents contents: String, errorCallback failureCallback: RCTResponseSenderBlock, callback successCallback: RCTResponseSenderBlock) -> Void {
// Check if fileName is nil or empty
if (fileName == nil) || (fileName != nil && count(fileName!) < 1) {
// Craft a failure message
let resultsDict = [
"success": false,
"errMsg": "Filename is empty"
]
// Execute the JavaScript failure callback handler
failureCallback([resultsDict])
return; // Halt execution of this function
}
// Perform code here since fileName has a value and is not empty
}
此代码首先检查 fileName
是否为 nil
。如果是这样,它将进入失败块。如果不是,则进入第二个条件。在第二个条件中,如果 fileName
有值且为空,它将进入失败块。只有当fileName
有值且不为空时才会跳过失败块。
怎么样
首先创建一个可选的nil字符串来设置示例 var 文件名:字符串?
现在的代码可以让您在一行中查看文件名是否为 nil/empty:
if (fileName ?? "").isEmpty
{
println("empty")
}
else
{
println("not empty")
}
这里使用了??
,Swift“nil coalescing operator”。 (link)
对于表达式:
a ?? b
其中 a
是可选的,它表示:
如果 a 不为零,return a。如果 a 为零,则 return b 代替。
所以
if (fileName ?? "").isEmpty
说
首先,评估文件名并查看它是否为零。如果是这样,请将其替换为空字符串。
接下来,检查结果是否为空。
您可以将 if let
和 if
语句组合成这样:
if let str = fileName where !str.isEmpty {
println(str)
} else {
println("empty")
}
如果您需要在检查文件名是 nil
还是空文件后使用该文件名,这种方法很有用。