- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
出于某种原因我得到了
fatal error: can not increment endIndex
在 myRange 行。为什么我会收到此错误?我不明白我的代码有什么问题。
import UIKit
class ViewController: UIViewController {
@IBOutlet var drag: UIPanGestureRecognizer!
@IBOutlet weak var currentLabel: UILabel!
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
@IBOutlet weak var label4: UILabel!
@IBOutlet weak var label5: UILabel!
@IBOutlet weak var label6: UILabel!
@IBOutlet weak var label7: UILabel!
@IBOutlet weak var label8: UILabel!
@IBOutlet weak var label9: UILabel!
let letter = "OX"
var currentLetter = Character!()
var decide = 0
var labelArray = [UILabel]()
var moveCounter = 0
override func viewDidLoad() {
super.viewDidLoad()
getCurrentLetter()
labelArray = [label1,label2,label3,label4,label5,label6,label7,label8,label9]
}
func getCurrentLetter()
{
let myRange = Range<String.Index>(start: letter.startIndex.advancedBy(decide), end: letter.startIndex.advancedBy(decide+1))
currentLabel.text = letter.substringWithRange(myRange)
currentLetter = Character(letter.substringWithRange(myRange))
}
func reset() {
decide = 0
}
@IBAction func dragObject(sender: UIPanGestureRecognizer) {
let points = sender.locationInView(view)
let currentPoints = currentLabel.frame.origin
currentLabel.center = CGPointMake(points.x, points.y)
for item in labelArray {
if CGRectContainsPoint(item.frame, points) {
item.text = String(currentLetter)
decide++
drag.enabled = false
currentLabel.center = currentPoints
} else if drag.enabled == false {
decide++
drag.enabled = true
currentLabel.center = currentPoints
}
if decide == 2 {
reset()
}
getCurrentLetter()
}
}
}
最佳答案
您的问题是 decide
或 decide+1
比字符串长。值得庆幸的是,有一些内置代码可以解决这个问题。
尝试替换
let myRange = Range<String.Index>(start: letter.startIndex.advancedBy(decide), end: letter.startIndex.advancedBy(decide+1))
currentLabel.text = letter.substringWithRange(myRange)
currentLetter = Character(letter.substringWithRange(myRange))
与
let end = letter.endIndex.advancedBy(-1, limit: letter.startIndex) //The -1 is actually required, as the 'limit:' bit does <=, not just <
let pos = letter.startIndex.advancedBy(decide, limit: end)
currentLetter = letter[pos]
currentLabel.text = currentLetter
关于ios - fatal error : can not increment endIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424195/
我有以下代码 public static void main(String args[]) throws Exception { String mySite = "StackOverflow"
这些评论有道理吗?试图找出为什么它删除了我的反向给定字符串的字符,而不是本例中的常规给定字符串。 import Foundation extension String { func reverse
我正在寻找“Swift 3”处理错误的方法,我尝试将字符串的位置增加到越界索引。我有一个如下所示的扩展: extension String { func substring(from: Int)
如果您创建一个 var Range = 0...0,我希望 endIndex 为零。但实际上是1。 var myRange: Range = 0...0 print("start Index \(my
我有一个函数可以找到用户在 UITextView 中选择的当前单词。但是,如果我在 UITextView.text 属性中有表情符号时调用此函数,我会看到崩溃。我相信这是因为 String 与 NSS
我想要我正在制作的计算器,特别是退格按钮来检查点是否被删除 if mainNumberLine.text!.endIndex == "." { } 写下我遇到的最常见错误“表达式类型不明确,没有更多上
我在一个项目中使用了 substring,之前我使用的是 endindex 位置,但没有产生预期的结果,后来我才知道 java substring 执行 endindex-1。我发现它没有用。那么为什
我有一个如下所示的字符串 String s = "John21071989Bangalore"; Class Person { String name; Long dob; String
endIndex 返回与 count 相同的值。这是正确的行为还是错误? var ar = [1, 2, 3, 4] ar.count // 4 ar.endIndex // 4 最佳答案 count
问题基本上说明了一切。假设我有一个(排序的)列表,可以包含从1K到1M的任何项目。我有一个starting index和一个ending index。如果我使用ArrayList.sublist(st
我正在为 iOS 应用程序使用 Swift 2.0/Xcode 7.0。我已经构建了一个日语 IME 来将罗马字符转换为对应的日语。例如: 输入“a”会将“a”转换为“あ” 在键入下一个字符之前,键入
我遇到了一些奇怪的 Range 行为,现在我质疑我认为我知道的关于 Swift 中的 Range 的一切。 let range = Range(start: 0, end: 2) print(rang
我正在尝试使用自动微分库 Adept,我让它与 gcc 4.9.0 和 icc 16.0.2 一起工作,但在 VS 2017 和 Clang 4.0.1 上失败 我已将问题简化为以下片段,并且在我与库
出于某种原因我得到了 fatal error: can not increment endIndex 在 myRange 行。为什么我会收到此错误?我不明白我的代码有什么问题。 import UIKi
我想问一下是否有某种实用函数可以在提供索引的同时提供数组连接。也许jQuery的Prototype提供了这个,如果没有,我自己写:) 我期望的是这样的 var array= ["a", "b", "c
我有 UITextView 的扩展: extension UITextView { func separatedWordsInFrontCursor(infront: Bool = true)
endIndex 和 count 的 String 在 swift2 中怎么可能不同?这是我使用的代码示例。当所有字符都只有英文时,不会发生这种情况。 print("count:",self.
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: why from index is inclusive but end index is exclusive
我尝试获取字符串的 startIndex 和另一个索引之间的距离,但在第一个循环迭代中出现以下错误。该代码实际上适用于大多数字符串,但有些会崩溃。 fatal error: cannot increm
我是 Swift 的新手,我正在探索如果在使用范围迭代集合时修改集合会发生什么。我不明白为什么这两个循环有不同的行为: var things = ["a", "b", "c"] for i in 0.
我是一名优秀的程序员,十分优秀!