相关疑难解决方法(0)

错误:将String扩展名转换为swift 3时,源文件中的编辑器占位符

    subscript (r: Range<Int>) -> String {
        let start = startIndex.advancedBy(r.startIndex)
        let end = start.advancedBy(r.endIndex - r.startIndex)
        return self[Range(start: start, end: end)]
    }
Run Code Online (Sandbox Code Playgroud)

苦苦挣扎将我的String扩展中的上面的下标转换为swift 3.下面是我在Xcode上按下转换按钮后发生的事情.

        subscript (r: Range<Int>) -> String {
            let start = characters.index(startIndex, offsetBy: r.lowerBound)
            let end = <#T##String.CharacterView corresponding to `start`##String.CharacterView#>.index(start, offsetBy: r.upperBound - r.lowerBound)
            return self[(start ..< end)]
        }
Run Code Online (Sandbox Code Playgroud)

错误的屏幕截图

string range ios swift swift3

5
推荐指数
1
解决办法
519
查看次数

如何在swift 4中获取子字符串?

我知道我们可以使用下标来剪切Swift 4中的一部分字符串.

let s = "aString"
let subS = s[..<s.endIndex]
Run Code Online (Sandbox Code Playgroud)

但问题是,如何切割s到像SubString一样aStr.
我的意思是,我想做的就像是s[..<(s.endIndex-3)].
但这不对.
那么,如何在Swift 4中做到这一点.

string swift swift4

4
推荐指数
1
解决办法
6371
查看次数

Swift 4中更简单的字符串切片

Swift 4改变了字符串的工作方式.但是,似乎更复杂,更不易阅读.任何人都可以简化这个例子(简单地将String的第三个字母作为字符串)?(除了拆分线外.)

let myString="abc"
let thirdLetter = String(myString[myString.index(myString.startIndex, offsetBy: 2)])
Run Code Online (Sandbox Code Playgroud)

string substring swift swift4

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

如何在原生 Swift 中实现以前称为 NSMutableOrderedSet 的可变有序集泛型类型?

我正在尝试实现一个通用的 Mutable Ordered Set 类型,它需要符合许多协议才能与 Array 和 Set 在 Swift 中的行为方式相同。首先要做到的是,泛型类型元素的需求,以符合Hashable和通用结构需要顺应RandomAccessCollectionSetAlgebraExpressibleByArrayLiteralAdditiveArithmeticRangeReplaceableCollectionMutableCollection。我想也允许其访问标SubSequence添加支持PartialRangeThroughPartialRangeUpToPartialRangeFromUnboundedRange也。

这是我的通用OrderedSet结构声明:

public struct OrderedSet<Element: Hashable> {
    public init() { }
    private var elements: [Element] = []
    private var set: Set<Element> = []
}
Run Code Online (Sandbox Code Playgroud)

尽管这是一个自我回答的问题,但我真的很感激并鼓励提供新的答案、有关此实现的一些反馈和/或有关如何修复/改进它的建议:

编辑/更新:

sorted方法按预期工作,但sort它的变异甚至不会改变元素顺序。

可变集合

声明变异

功能排序()

当 Self 符合 RandomAccessCollection 并且 Element 符合 Comparable 时可用。

var …
Run Code Online (Sandbox Code Playgroud)

arrays set nsorderedset nsmutableorderedset swift

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

访问字符串中的字符,Swift 3.x

我在Apple的开发人员站点上找不到文档。在过去的几个小时里,我一直在寻找一个无法解释的答案。我正在尝试学习Swift,并且正在尝试访问字符串中的第n个字符。在C ++中,我知道您可以使用str [int value]即做到这一点。

string str = "This is a test string"; cout << str[2] << endl;

如果我算对的话,应该打印出“ i”。我试图在Swift中做/找到一种方法来做,但是还没有找到简单的方法来做。有人能提供一些意见吗?

string char swift

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

Swift 4 子字符串崩溃

我对 Swift 4 字符串操作的最佳实践有点困惑。

您如何处理以下情况:

let str = "test"
let start = str.index(str.startIndex, offsetBy: 7)


Thread 1: Fatal error: cannot increment beyond endIndex
Run Code Online (Sandbox Code Playgroud)

想象一下,您不知道上面变量“str”的长度。由于“start”不是可选值,那么防止崩溃的最佳实践是什么?

swift

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

检测URL的长度以确定UIDocumentPickerViewController的文件类型

我正在尝试从 documentPicker 获取文件类型。我允许我的用户上传 PDF/WORD(doc/docx) 文档类型,对我来说知道是哪一种文档类型至关重要,这样我就可以重命名文件并上传到我的 AWS S3。

感谢任何帮助,我找不到直接从 UIDocumentPickerViewController 获取它的方法。

因此,我试图找到整个 URL 的长度,然后减去 2/3 的长度来找到第一个字母“d”或“p”,然后我可以相应地设置名称。但是我收到此错误,无法使用类型为“(URL)”的参数列表调用类型“String”的初始值设定项。

 public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
        let myURL = url as URL
        print("import result : \(myURL)")

        let s3BucketName = "adnexio-directory/cv_upload"
        let url = myURL
        var remoteName = ""
        //if (url[url.length as Int - 3] == "d")
        //if (str[str.count - 3] == "d")
        if (url.length - 3 == "d")
        {
            remoteName = "IOSTEST.docx"
        }
        else if (url.length - 2 == "d")
             {
                remoteName …
Run Code Online (Sandbox Code Playgroud)

url string-length ios swift uidocumentpickerviewcontroller

-1
推荐指数
1
解决办法
732
查看次数