我正在使用xcode 6 beta 6,我得到了一个没有参数的函数的奇怪错误.
这是功能
func allStudents ()-> [String]{
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Student")
request.returnsObjectsAsFaults = false
//Set error to nil for now
//TODO: Give an actual error.
var result:NSArray = context.executeFetchRequest(request, error: nil)
var students:[String]!
for child in result{
var fullname:String = child.valueForKey("firstName") as String + " "
fullname += child.valueForKey("middleName") as String + " "
fullname += child.valueForKey("lastName") as String
students.append(fullname)
}
return students
}
Run Code Online (Sandbox Code Playgroud)
这是电话
var all …Run Code Online (Sandbox Code Playgroud) 好的,我的项目中有一堆辅助函数,我最初在一个名为Animate的类中.我很想知道声明func vc类func有什么好处.
让我们使用它作为示例类:
class Animate{
func moveView(...){
...
}
}
Run Code Online (Sandbox Code Playgroud)
所以我相信如果我有一个类func,我就不必实例化这个类了.
Animate.moveView(...)
如果我只用func声明函数,它将是:
Animate().moveView(...)
但是,如果我不将该文件声明为类,则:
func moveView(...){
...
}
Run Code Online (Sandbox Code Playgroud)
当我调用该函数时,它只是:
moveView(...)
Run Code Online (Sandbox Code Playgroud)
没有指示代码来自哪里,它可以在项目的任何地方使用.
这三种方式的优点和缺点是什么?是不是宣布一个不好的做法?或者,是否有一些边缘情况,这是非常有用的?例如,在我的情况下,我不需要一个类,因为我只是创建辅助函数而不是对象.
提前感谢您对此有任何见解!
在AlamoFire获取请求中,我正在尝试更新我的进度条.像这样:
alamofireManager.request(.GET, urlPath, parameters: params).responseJSON{(request,response,JSON,error) in
...<code here>...
dispatch_async(dispatch_get_main_queue(), {
NSNotificationCenter.defaultCenter().postNotificationName(LoginVCHideSpinnerAndShowProgressBarName as String, object: self)
})
...<more code here>...
}
Run Code Online (Sandbox Code Playgroud)
由于某些原因,这需要几秒钟的时间来执行,如果我使用dispatch_sync该应用程序似乎只是卡在那一点,但UI不会冻结(活动指示器微调器继续).我还想指出,一旦应用程序点击此代码,它就会继续执行代码,就像它已被执行一样.然后在大约6秒后执行它,好像它没有在主线程上被调用一样.
我也只是尝试这样做而不是使用通知.
dispatch_async(dispatch_get_main_queue(), {
loginVC.progressBar.hidden = false
loginVC.indicator.hidden = true
loginVC.progressBar.setProgress(0.1, animated: true)
})
Run Code Online (Sandbox Code Playgroud)
这似乎比通知慢.
我很困惑为什么会发生这种情况,因为我告诉它在主线程中进行更新.我也很困惑为什么通知实际上要快一点.
uiprogressview nsnotification dispatch-async swift alamofire