我正在尝试构建一个自动更正系统,所以我需要能够删除键入的最后一个单词并用正确的单词替换它.我的解决方案
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)")
    }
}
在每次击键后调用此方法,如果按下该空格,则会更正该单词.当文本字符串变得超过大约20个单词时,我的问题就出现了.每次按下一个字符时,它需要一段时间来填充数组,并且它开始滞后到无法使用它的点.是否有更高效,更优雅的Swift编写此功能的方式?我很感激任何帮助!
我正处于我的小部件开发之间.我们已经将我们的应用程序与小部件集成放在一起 但在现在的某些日子里,我面临着iOS今天的小部件问题.我写了两个案例的代码.第一次在小部件最初首次加载应用程序时,它会调用Web服务并通过Internet获取数据,然后我们将它们存储到用户默认值以供以后使用.
现在,当下次用户下拉通知菜单时,我们首先向用户显示旧的存储内容,然后我们从web-service获取它并以user-default存储,然后再次重新加载表.
对于上述操作,我在某些情况下面临表格内容大小问题,闪烁问题和"无法加载"消息.
现在看一下下面的代码,我在下面的方法中进行网络调用,在web-service的响应之后,我只处理完成处理程序.
- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
    // Perform any setup necessary in order to update the view.
    // If an error is encountered, use NCUpdateResultFailed
    // If there's no update required, use NCUpdateResultNoData
    // If there's an update, use NCUpdateResultNewData
    [self getBookedAppointmentsNew:completionHandler];
}
所以,请与我分享您的经验和想法.
ios ios-app-extension ios8-extension ios8-today-widget ios-extensions
我有一个为iOS8实现的共享扩展.该服务使用OAuth进行身份验证.我用于扩展程序的登录信息与容器应用程序共享.
问题是:
当我在扩展程序中,然后应用程序切换到容器应用程序并注销,然后应用程序切换回包含扩展程序的主机应用程序 - 如何检测到扩展程序刚刚重新出现?扩展程序依赖于容器应用程序和扩展程序之间的共享数据库中存在的某些信息,但是,当应用程序注销时,该数据将被删除.
我已经尝试注册各种"应用程序通知",例如UIApplicationDidBecomeActiveNotification.但是,正如预期的那样,这些不会被要求扩展.
如何检测扩展的状态何时发生变化,以便在重新出现时可以使我的扩展更加强大?
我正在尝试使用以下代码在动画中增加自定义键盘的高度.但我无法弄清楚为什么变化会立即发生,忽略动画.
//In viewDidAppear
[self.view needsUpdateConstraints];
[UIView animateWithDuration:2 animations:^{ 
     CGFloat _expandedHeight = 500;
     NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint 
          constraintWithItem: self.view 
          attribute: NSLayoutAttributeHeight 
          relatedBy: NSLayoutRelationEqual
          toItem: nil 
          attribute: NSLayoutAttributeNotAnAttribute
          multiplier: 0.0 
          constant: _expandedHeight];
     [self.view addConstraint: _heightConstraint];
     [self.view layoutIfNeeded];
}];
我正在开发一个今天的小部件,显示有关使用它的用户的一些个人信息.根据Apple文档(此处),系统会捕获当前窗口小部件视图的快照.
为了帮助您的窗口小部件查看最新版本,系统偶尔会捕获窗口小部件视图的快照.当窗口小部件再次可见时,将显示最新的快照,直到系统将其替换为视图的实时版本.
形成安全原因和数据完整性我被问到以下问题:
谢谢 ...
我在XCode上的iOS应用程序项目中添加了共享扩展名。但是,当我选择一张照片并选择要共享的扩展名时,决不会调用ShareViewController的didSelectPost()函数!为了测试这一点,我只是在上面放了一个断点并添加了somme日志打印。
有关信息,我有一个由XCode创建的ShareViewController类以及主要的故事板和info.plist。
谢谢

我正在使用Apple Watch Notifications.我定义了自己的类别"myAppcategory"并将其传递给通知有效负载.但是,我仍然在XCode收到以下警告.
警告:未找到通知类别"(null)".在故事板中定义此类别或默认类别.
而手表模拟器的结果如下

任何人都可以帮我解决这个问题吗?
我有一个具有以下代码的应用程序:
NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.myCo.myApp"];
[containerURL URLByAppendingPathComponent:@"Myfile"]];
读取和写入仍在Myfile工作,但我希望能够直接在手机上访问该文件以进行调试和测试。
它不在App的容器中(“窗口”>“设备” >>“下载”容器),将设备连接到计算机的开发人员真的不能访问它吗?我觉得我在这里想念什么吗?
我正在为我的应用程序构建共享扩展.我的问题是它没有显示在共享列表中,直到我转到"更多"屏幕,禁用然后启用它.我尝试了所有'NSExtensionActivationRule'组合,包括TRUEPREDICATE.
PS.Action Extension也是如此.尝试在模拟器和设备上.所有其他已启用的扩展程序始终显示.
我需要在我的应用程序的共享扩展中访问 keyWindow 
- 添加一些指示器视图
- 访问窗口的宽度和高度
我在共享扩展类中编写了以下行:
UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
但是,它说“sharedApplication”不可用。
如何访问共享扩展中的 keyWindow?
需要您的宝贵建议。
提前致谢
ios ios8 ios-app-extension ios8-share-extension ios8-extension