只需将Swift 3迁移到Swift 5并获得所有这些错误。在执行此操作之前,我没有任何错误。
var imageData = UIImageJPEGRepresentation(imgTemp, 1)
错误:'UIImageJPEGRepresentation'已由实例方法'UIImage.jpegData(compressionQuality :)'代替
tableView.SeparatorStyleCell.none
错误:类型为“ UITableView?”的值?没有成员“ SeparatorStyleCell”
tableView.UITableView.AutomaticDimension
错误:类型为“ UITableView?”的值?没有成员“ UITableView”
self.tableView.UIEdgeInset = insetsMake(8, 0, 15, 0);
错误:使用未解决的标识符“ insetsMake”
attributedString.addAttributes(boldFontAttribute, range: datetime.range(of: "Read"))
错误:使用未解决的标识符“ boldFontAttribute”
答案 0 :(得分:0)
您遇到的错误是混合的编译器,告诉您所使用的语法对于此版本的Swift而言已过时,例如:
'UIImageJPEGRepresentation'已被实例方法'UIImage.jpegData(compressionQuality :)'代替
和Swift迁移器对您的代码做一些有趣的事情,例如:
self.tableView.UIEdgeInset = insetsMake(8, 0, 15, 0);
您是否已将该代码置于版本控制之下?理想情况下是Git回购吗?
如果是这样,您可以还原所有这些更改并重新开始。或仅在不使用迁移器的情况下将Swift的版本设置为5,并解决每个编译器错误。
最好的办法是一次解决一个错误,并且每次解决问题时都可以提交一次承诺,因此,如果下一步不进行锻炼,则可以从那里重新开始,而不必放松所有精力进度。
对于混乱的代码,也许您可以先了解一下代码在做什么,然后尝试从头开始重写它。
在上面的示例中,我猜这是代码,因此设置表视图的内容插入或其他插入属性。您可以这样重写它:
tableView.contentInset = UIEdgeInsets(top: 8, left: 0, bottom: 15, right: 0)
请注意,我删除了self.
,通常没有必要,除非您位于闭包中并且需要使其明确。
答案 1 :(得分:0)
看起来有些孤立的Objective-C在您的项目中得以幸存。
tableView.SeparatorStyleCell.none
应该是
tableView.separatorStyle = .none
下一步:
tableView.UITableView.AutomaticDimension
应该是
tableView.rowHeight = UITableView.automaticDimension
至:
var imageData = UIImageJPEGRepresentation(imgTemp, 1)
旧的C函数确实移动了正在使用的类。 (我喜欢Apple清理旧界面的方式)
var imageData = imgTemp.jpegData(compressionQuality: 1)
至:
self.tableView.UIEdgeInset = insetsMake(8, 0, 15, 0);
mokagios的答案是正确的。再次清理苹果界面。 UIEdgeInsets现在是一种类型,并且具有init函数。
最后:
attributedString.addAttributes(boldFontAttribute, range: datetime.range(of: "Read"))
我猜您的boldFontAttribute是一个包含相应键和字体的Dict。与下划线等其他属性不同,粗体不是属性,而是字体。要使范围变为粗体,您需要为该范围分配其他字体。 在Swift中会是
let boldFontAttribute = { NSAttributedString.Key.font : YourBoldFont }