从Xcode 8中的Swift 2.3到Swift 3

不久前,我将Xcode转换为Xcode 8,这最终意味着我可以选择将整个项目转换为Swift3。虽然大多数转换是为您完成的(其中很多是对您而言),但是仍然有一些组件Xcode不能更改,您必须手动检查代码以自行查找和转换它们。

由于Swift 3上个月才问世,因此您在网上找不到太多的文档/语法,因为大多数人仍在使用它或尚未转换。 我发现有些东西与Swift的早期版本和Swift 3有所不同。其中之一是大多数“ NeXTSTEP”类都消失了。 “ NeXTSTEP”或NS — — —是Objective-C类,是可可框架的原始代码。 在进行API调用时,我记得在转换为Swift 3之前,我必须使用NSURL来获取URL并使用NSURLSession来创建互联网会话。 现在有了Swift 3,API调用的NS部分已经消失了,现在仅使用URL和URLSession。

我发现,尽管仍然有一些使用NS的类(例如NSDictionary,NSArray等),但Apple试图让他们的语言Swift摆脱NS。

我必须自己手动更改的另一个组件是实现核心数据时。 在Swift 3之前,我记得在获取数据时,我们必须将获取请求置于需要获取的任何对象上。

  func fetchData() 
{
var错误:NSError? =无
让userRequest = NSFetchRequest(entityName:“ Users”)做{
让对象=尝试ManagedObjectContext.executeFetchRequest(userRequest)作为? [用户]如果对象?.count> 0
{
如果让对象=对象
{
个体=对象[0]
}
}
}赶上{
打印(错误)
}

在Swift 3中,他们在获取请求后使用该胡萝卜符号,有点像将其包围在需要的对象上。

现在,将项目转换为任何版本的Swift或Xcode时最令人沮丧的一件事是,如果您在项目中使用了CocoaPods。 短期内,CocoaPods是来自其他程序员的第三方代码段,以多种方式帮助您的项目,例如动画,设计,颜色,方法调用,API,约束等等。

在项目中使用CocoaPods的问题在于CocoaPod必须支持您正在使用的版本。 因此,如果您在Swift 2.3中处理项目,那么CocoaPod也必须在Swift 2.3中。 由于Swift 3还是相对较新的版本,因此并没有很多CocoaPod更新到Swift 3,这使得您的项目无法运行,直到他们对其进行更新,或者您在项目中手动进入其源代码并将其转换为Swift 3。

最终,所有Swift程序员都将不得不转换为Apple提供给我们的最新版本,即使您遇到190编译错误,我们作为程序员也必须咨询这些更改。 不要害怕更改,这是非常有益的,因为您可以从Apple获得最新版本和更新,并且Apple所做的这些更改旨在帮助我们Swift程序员使您的程序运行起来更流畅,更容易编码。