我正在尝试创建一个自动更正系统,当用户键入带有大写字母的单词时,自动更正功能不起作用.为了解决这个问题,我制作了一个字符串类型的副本,应用了.lowercaseString,然后对它们进行了比较.如果字符串确实是错误的,它应该纠正这个词.然而,替换键入的单词的单词都是小写的.所以我需要将.uppercaseString仅应用于第一个字母.我原本以为我可以用
nameOfString[0]
Run Code Online (Sandbox Code Playgroud)
但这显然不起作用.如何将字符串的第一个字母设置为大写,然后能够打印第一个字母大写的完整字符串?
谢谢你的帮助!
我正在使用iOS 7开发应用程序,我刚刚更新到iOS 8测试版.我下载了Xcode 6测试版,现在当我插入手机时,它将我的手机列入"不合格设备",并且不会让我开发在上面.为什么是这样?
我已经看过这个问题已被问过几次,但似乎没有人有答案.我试图在自定义键盘上创建一个自动更正功能,但我完全迷失了如何这样做.Apple提供了一些文档,但不是很详细.我知道它与UILexicon数据有关,但我不知道如何处理它以及如何使用它来纠正用户输入的文本字符串.
任何帮助将不胜感激.
到目前为止我发现了什么:
let controller = UIInputViewController()
controller.requestSupplementaryLexiconWithCompletion({
lexicon in
println(lexicon.description)
})
Run Code Online (Sandbox Code Playgroud)
但就我而言,这就是我的意思.不知道该怎么做.
我正在尝试构建一个自动更正系统,所以我需要能够删除键入的最后一个单词并用正确的单词替换它.我的解决方案
func autocorrect() {
hasWordReadyToCorrect = false
var wordProxy = self.textDocumentProxy as UITextDocumentProxy
var stringOfWords = wordProxy.documentContextBeforeInput
fullString = "Unset Value"
if stringOfWords != nil {
var words = stringOfWords.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
for word in words {
arrayOfWords += [word]
}
println("The last word of the array is \(arrayOfWords.last)")
for (mistake, word) in autocorrectList {
println("The mistake is \(mistake)")
if mistake == arrayOfWords.last {
fullString = word
hasWordReadyToCorrect = true
}
}
println("The corrected String is \(fullString)")
}
}
Run Code Online (Sandbox Code Playgroud)
在每次击键后调用此方法,如果按下该空格,则会更正该单词.当文本字符串变得超过大约20个单词时,我的问题就出现了.每次按下一个字符时,它需要一段时间来填充数组,并且它开始滞后到无法使用它的点.是否有更高效,更优雅的Swift编写此功能的方式?我很感激任何帮助!
我正在尝试将双精度值截断为小数点后两位。我尝试使用:
[highScoreLabel setText:[NSString stringWithFormat:@"Highscore: %.2f",finalTime]];
Run Code Online (Sandbox Code Playgroud)
但我发现它在 2 位之后四舍五入了数字。这使得我向游戏中心报告的分数和应用程序中显示的分数不同。如何在不四舍五入的情况下截掉小数点的其余部分?
我的应用程序中的所有内容在常规使用中完全正常.但是,如果应用程序被电话中断,应用程序恢复时,播放声音文件的操作将不再播放声音文件.在电话通话之前,它每次都会播放.
关于导致什么/如何解决这个问题的任何想法?
我正在尝试使用以下格式创建NSPredicate:
var aPredicate = NSPredicate(format: "latitude >= %d AND latitude <= %d AND longitude >= %d AND longitude <= %d", latitudeGreater, latitudeLesser, longitudeGreater, longitudeLesser)
Run Code Online (Sandbox Code Playgroud)
我一直关注的教程是使用日期和使用%@
,我收到错误,因为latitude >= nil
无法正常工作.当我终于意识到我需要一种不同的插值格式时,我试图查找使用a的正确方法double
,但我似乎找不到任何关于此的信息.%d
就像我在我的代码中现在给我latitude >= 0
以及其余的0.我怎样才能让整体double
进入空间?
我的例子太复杂了,所以这里是我想要做的简化版本:
if someVariable {
let thisVariable = 5
} else {
let thisVariable = "This is not a number"
}
print(thisVariable)
Run Code Online (Sandbox Code Playgroud)
我试图在变量上使用相同的代码,无论其类型如何,但我似乎无法找到干净地执行此操作的方法,因为在if语句中声明的变量不是全局变量.我不能把它变成全局的,因为我不能在if语句之外声明它的类型.有没有一种简单的方法来实现我正在寻找的结果?谢谢!