Подтвердить что ты не робот

Swift Как удалить дополнительный строковый символ

Как удалить необязательный символ


let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex)

println(color) // Optional("Red")

let imageURLString = "http://hahaha.com/ha.php?color=\(color)"
println(imageURLString)
//http://hahaha.com/ha.php?color=Optional("Red")

Мне просто нужен вывод http://hahaha.com/ha.php?color=Red"

Как я могу это сделать?

хмм....

4b9b3361

Ответ 1

На самом деле, когда вы определяете любую переменную как необязательную, вам нужно развернуть это необязательное значение. Чтобы решить эту проблему, вы должны объявить переменную как non option или поставить! (Восклицательный знак) за переменной, чтобы развернуть значение параметра.

var temp : String? // This is an optional.
temp = "I am a programer"                
print(temp) // Optional("I am a programer")

var temp1 : String! // This is not optional.
temp1 = "I am a programer"
print(temp1) // "I am a programer"

Ответ 2

Я просмотрел это снова, и я упрощаю свой ответ. Я думаю, что большинство ответов здесь не хватает. Обычно вы хотите напечатать, имеет ли ваша переменная значение, и вы также хотите, чтобы ваша программа не сработала, если это не так (поэтому не используйте!). Здесь просто сделайте это

    print("color: \(color ?? "")")

Это даст вам пустоту или значение.

Ответ 3

Вам необходимо развернуть опцию, прежде чем пытаться использовать ее с помощью строковой интерполяции. Самый безопасный способ сделать это - необязательная привязка:

if let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex) {
    println(color) // "Red"

    let imageURLString = "http://hahaha.com/ha.php?color=\(color)"
    println(imageURLString) // http://hahaha.com/ha.php?color=Red
}

Ответ 4

Отметьте для nil и распакуйте, используя "!":

let color = colorChoiceSegmentedControl.titleForSegmentAtIndex(colorChoiceSegmentedControl.selectedSegmentIndex)

println(color) // Optional("Red")

if color != nil {
    println(color!) // "Red"
    let imageURLString = "http://hahaha.com/ha.php?color=\(color!)"
    println(imageURLString)
    //"http://hahaha.com/ha.php?color=Red"
}

Ответ 5

В swift3 вы можете легко удалить необязательный

if let value = optionalvariable{
 //in value you will get non optional value
}

Ответ 6

Помимо решений, упомянутых в других ответах, если вы хотите всегда избегать этого дополнительного текста для всего проекта, вы можете добавить этот код:

pod 'NoOptionalInterpolation'

(https://github.com/T-Pham/NoOptionalInterpolation)

Пакет добавляет расширение, чтобы переопределить метод инициализации строки интерполяции, чтобы избавиться от необязательного текста один раз для всех. Он также предоставляет настраиваемый оператор *, чтобы вернуть поведение по умолчанию.

Итак:

import NoOptionalInterpolation
let a: String? = "string"
"\(a)"  // string
"\(a*)" // Optional("string")

Подробнее см. fooobar.com/questions/72849/....

Ответ 7

Попробуйте это,

var check:String?="optional String"
print(check!) //optional string. This will result in nil while unwrapping an optional value if value is not initialized or if initialized to nil.
print(check) //Optional("optional string") //nil values are handled in this statement

Идите первым, если вы уверены, что не имеете нулевого значения в своей переменной.

Ответ 8

print ("imageURLString =" + imageURLString!)

просто используйте!