相关疑难解决方法(0)

在Swift编程语言中获取字符串的第n个字符

如何获取字符串的第n个字符?我尝试了托架([])访问器没有运气.

var string = "Hello, world!"

var firstChar = string[0] // Throws error
Run Code Online (Sandbox Code Playgroud)

错误:'subscript'不可用:不能使用Int下标String,请参阅文档注释以供讨论

string collections character swift

392
推荐指数
20
解决办法
27万
查看次数

String子串如何在Swift中工作

我一直在使用Swift 3更新我的一些旧代码和答案但是当我使用子字符串获取Swift字符串和索引时,事情变得令人困惑.

具体来说,我尝试以下方法:

let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5)
let prefix = str.substringWithRange(prefixRange)
Run Code Online (Sandbox Code Playgroud)

第二行给我以下错误

'String'类型的值没有成员'substringWithRange'

我看到现在String确实有以下方法:

str.substring(to: String.Index)
str.substring(from: String.Index)
str.substring(with: Range<String.Index>)
Run Code Online (Sandbox Code Playgroud)

起初这些让我很困惑,所以我开始玩索引和范围.这是子串的后续问题和答案.我在下面添加一个答案来说明它们是如何使用的.

string substring range swift

316
推荐指数
14
解决办法
27万
查看次数

如何使用Swift创建属性字符串?

我想制作一个简单的咖啡计算器.我需要以克为单位显示咖啡量.克的"g"符号需要附加到我用来显示金额的UILabel上.UILabel中的数字正在根据用户输入动态变化,但我需要在字符串末尾添加小写"g",其格式与更新数字不同.需要将"g"附加到数字上,以便随着数字大小和位置的变化,"g"随着数字"移动".我确信这个问题已经解决了,所以正确的方向链接会有所帮助,因为我已经搜索了我的小心脏.

我在文档中搜索了一个属性字符串,我甚至从应用程序商店下载了一个"Attributed String Creator",但结果代码是在Objective-C中,我使用的是Swift.什么是令人敬畏的,并且可能对其他开发人员学习这种语言有帮助,这是使用Swift中的属性字符串创建具有自定义属性的自定义字体的明显示例.这方面的文档非常令人困惑,因为没有非常明确的方法来解决这个问题.我的计划是创建属性字符串并将其添加到coffeeAmount字符串的末尾.

var coffeeAmount: String = calculatedCoffee + attributedText
Run Code Online (Sandbox Code Playgroud)

其中calculateCoffee是一个Int转换为字符串,"attributedText"是小写的"g",其中包含我想要创建的自定义字体.也许我会以错误的方式解决这个问题.任何帮助表示赞赏!

fonts nsattributedstring uilabel swift

293
推荐指数
15
解决办法
27万
查看次数

在Swift中获取和设置UITextField和UITextView的光标位置

我一直在尝试UITextField和如何使用它的光标位置.我已经找到了许多关系Objective-C答案,如

但由于我正在使用Swift,我想学习如何获取当前光标位置并在Swift中设置它.

下面的答案是我从Objective-C进行实验和翻译的结果.

uitextfield uitextview ios uitextposition swift

93
推荐指数
3
解决办法
7万
查看次数

String.Index如何在Swift中工作

我一直在使用Swift 3更新我的一些旧代码和答案,但是当我使用Swift Strings和Indexing时,理解事情是一件很痛苦的事情.

具体来说,我尝试以下方法:

let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error
Run Code Online (Sandbox Code Playgroud)

第二行给我以下错误

'advancedBy'不可用:要将索引推进n步,请在生成索引的CharacterView实例上调用'index(_:offsetBy :)'.

我看到它String有以下方法.

str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)
Run Code Online (Sandbox Code Playgroud)

起初这些让我很困惑所以我开始玩它们直到我理解它们.我在下面添加一个答案来说明它们是如何使用的.

string indexing swift

92
推荐指数
1
解决办法
7万
查看次数

'init(start:end :)'已弃用:它将在Swift 3中删除.使用'.. <'运算符

我正在使用以下代码:

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
Run Code Online (Sandbox Code Playgroud)

自从更新到Xcode 7.3(Swift 2.2)后,我得到以下提示:

'init(start:end :)'已弃用:它将在Swift 3中删除.使用'.. <'运算符.

对于我来说,如何使用"..."运算符正确地"翻译"它并不清楚.

swift xcode7.3

72
推荐指数
3
解决办法
1万
查看次数

如何从UITextView或UITextField获取选定范围的文本

我试图从UITextView(和/或UITextField)获取选定的文本范围,以便我可以编辑选定的文本,或修改属性字符串.我做出选择时会触发下面的方法,但方法中的代码会返回空值.

- (void)textViewDidChangeSelection:(UITextView *)textView {

    UITextRange *selectedRange = [textField selectedTextRange];

    NSLog(@"Start: %@ <> End: %@", selectedRange.start, selectedRange.end);

}
Run Code Online (Sandbox Code Playgroud)

uitextfield uitextview nsattributedstring ios uitextrange

12
推荐指数
2
解决办法
1万
查看次数

无法将“ClosedRange&lt;Int&gt;”类型的值转换为预期的参数类型“Range&lt;Int&gt;”

我有这个代码:

VStack {
    ForEach(0...2) { i in
        HStack {
            ForEach(0...2) { j in
                Text("test")
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

这给了我Cannot convert value of type 'ClosedRange<Int>' to expected argument type 'Range<Int>'两个 ForEach 语句的错误

我已经看到了有关此错误的线程,并且对范围事物的工作原理有所了解,但实际上并非如此。我想知道如何解决这个错误。

type-conversion swift swiftui

11
推荐指数
2
解决办法
6069
查看次数

如何在Swift中将Unicode字符转换为Int

用户向我的一个答案询问了以下问题.

我有一个unicode角色\u{0D85}.我如何从中获得Int价值?

我打算将它们引用到另一个Stack Overflow Q&A,但我找不到一个.这些是指转换另一个方向:

这些似乎是在询问如何将字符串形式的数字转换为实际数字Int(如转换"1"1).

我将在下面提供一个答案,而不是试图将我的答案放在对提问者的评论中.类型\u{0D85}有点不清楚,但我将涵盖各种可能性.

unicode integer swift

10
推荐指数
1
解决办法
3882
查看次数

'String'类型的值没有成员'substringToIndex'

我不确定我在这里缺少什么,但我想要做的就是从字符串中获取子字符串.我在操场上乱搞,我的代码只有三行长行,我声明一个字符串,得到一个索引,然后尝试从中获取一个子字符串,我得到这个错误.这就是我的代码......

var name = "Stephen"
var index = name.startIndex.advancedBy(3)
var substring = name.substringToIndex(index)
Run Code Online (Sandbox Code Playgroud)

我做错了吗?我没有看到任何其他方法从字符串中获取子字符串.

在一个不相关的问题中,如果我想从索引2和5之间的字符串中获取子字符串,我将如何在Swift 2中进行该操作?

ios swift

8
推荐指数
2
解决办法
6527
查看次数