我不知道如何处理这种情况,因为我是iOS开发和Swift的新手.我正在执行数据提取,如下所示:
func application(application: UIApplication!, performFetchWithCompletionHandler completionHandler: ((UIBackgroundFetchResult) -> Void)!)
{
loadShows()
completionHandler(UIBackgroundFetchResult.NewData)
println("Background Fetch Complete")
}
Run Code Online (Sandbox Code Playgroud)
我的loadShows()函数解析从加载到UIWebView的网站获得的一堆数据.问题是我有一个在loadShows函数中等待10秒左右的计时器.这允许在我开始解析数据之前完全加载页面中的javascript.我的问题是完成处理程序在我的loadShows()之前完成.
我想要做的是为"isCompletedParsingShows"添加一个bool,并使completionHandler行等待完成,直到该bool为真.处理这个问题的最佳方法是什么?
我试图在用户单击UILocalNotification时从swift中的app delegate加载特定的ViewController.我已经发现在这个函数中调用了它:
func application(application: UIApplication!, didReceiveLocalNotification notification: UILocalNotification!)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问其中一个打开的ViewControllers时,我认为它返回null,因为我的应用程序正在崩溃.这是我正在尝试的:
var rootViewController = self.window!.rootViewController
var storyBoard = rootViewController.storyboard
var setViewController = storyBoard.instantiateViewControllerWithIdentifier("CurrentShows") as ViewController_CurrentShows
rootViewController.navigationController.popToViewController(setViewController, animated: false)
setViewController.reloadData()
Run Code Online (Sandbox Code Playgroud)
它在popToViewController行崩溃了.
我试图弄清楚如何在swift中设置UILocalNotification,但我没有很多运气.我在尝试这个:
var notification = UILocalNotification()
notification.timeZone = NSTimeZone.defaultTimeZone()
var dateTime = NSDate.date()
notification.fireDate(dateTime)
notification.alertBody("Test")
UIApplication.sharedApplication().scheduleLocalNotification(notification)
Run Code Online (Sandbox Code Playgroud)
首先,我不确定这是否是获取当前日期时间的正确方法.在.Net中,我只会做DateTime.Now().
其次,当我尝试这个时,我得到一个错误,上面写着:
'(@lvalue NSDate!) - > $ T3'与'NSDate'不同
不幸的是,我不知道这意味着什么或如何继续.
在我的应用程序中,我从Internet下载图像并将其存储在文档目录中.强制关闭应用程序并再次调试后,文档目录的位置似乎发生了变化.我相信每次调试应用程序时都会分配一个新的应用程序ID ...这是正常行为吗?
我在CoreData中存储图像文件路径,然后当我加载它时,我打印filePath以帮助我调试,这是我看到的:
/ var/mobile/Applications/37A083EC-ED2E-4B40-80E3-E1E813AB3D1E/Documents/2740-Chris Robinson Brotherhood.jpg
如果我停止调试,并且在我真正的iPhone上我强制关闭应用程序,并再次调试我存储在CoreData中的文件路径保持与上面相同,但是当我将文档目录作为测试引用时,看来应用程序ID已更改:
在/ var /移动/应用/ D952D72B-E3AD-4085-99FD-7C06000DA66C /文档
我怎么能绕过这个?