我有一个项目,其中(iOS 部分)使用的是Swift 4编写。我将其更新到了5版本,但现在出现了这些警告。尽管我已经按照建议进行了修复,但每次都会得到不同的错误。你能帮帮我吗?
代码
func saveData(data: BloodData) {
if let defaults = getUserDefaults() {
BloodData.registerClassName()
let encodedData: Data = NSKeyedArchiver.archivedData(withRootObject: data)
defaults.set(encodedData, forKey: dataKey)
defaults.synchronize()
}
}
警告
archivedData(withRootObject:)' was deprecated in iOS 12.0: Use +archivedDataWithRootObject:requiringSecureCoding:error: instead
代码
func getData() -> BloodData? {
BloodData.registerClassName()
if let defaults = getUserDefaults(), let data = defaults.data(forKey: dataKey), let decodedData = NSKeyedUnarchiver.unarchiveObject(with: data) as? BloodData {
return computeData(data: decodedData)
}
return nil
}
警告
'unarchiveObject(with:)' was deprecated in iOS 12.0: Use +unarchivedObjectOfClass:fromData:error: instead
这里有一个名为 computeData 的函数:
private func computeData(data: BloodData) -> BloodData? {
let today = Date()
let calendar = Calendar.current
let date1 = calendar.date(bySettingHour: 12, minute: 00, second: 00, of: calendar.startOfDay(for: data.readingDate))!
let date2 = calendar.date(bySettingHour: 12, minute: 00, second: 00, of: calendar.startOfDay(for: today))!
let components = calendar.dateComponents([.day], from: date1, to: date2)
let dayDiff = components.day ?? 0
let newBloodData = BloodData(
whiteCells: data.whiteCells - dayDiff,
fullBlood: data.fullBlood - dayDiff,
platelet: data.platelet - dayDiff,
redCells1: data.redCells1 - dayDiff,
redCells2: data.redCells2 - dayDiff,
bloodPlasma: data.bloodPlasma - dayDiff,
readingDate: date2
)
return newBloodData
}