我調試我的程序來檢查屬性的值是否設置正確,我把一個斷點在這個函數:什麼是iOS中的有效載荷數據?
func showContent(data: Any) -> UIView {
// breakpoint here
var contentView = UIView()
if let image = data as? UIImage {
let imageView = UIImageView()
imageView.image = image
contentView = imageView
}
if let text = data as? String {
let label = UILabel()
label.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
label.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
label.text = text
contentView = label
}
return contentView
}
傳遞給這個函數的值是從一個視圖控制器:
override func viewDidLoad() {
calcGroupFamiliarity()
flashCardView.linkedMemory = Memory(masteryLevel: 1, algorithm: Algorithm.algorithm1.chooseAlgorithm(), forgetRatio: 0, lastStudyTime: Date(), front: #imageLiteral(resourceName: "Ideas-Blue"), back: #imageLiteral(resourceName: "Ideas-Yellow"))
}
,你可以看到,無論是front
和back
是圖像,但是,在調試他們都出現了一些payload_data
,而如masteryLevel
其他值的數據類型,algorithm
是正確的:
有人可以解釋這是什麼意思?我應該怎麼做才能傳遞正常的圖像數據呢?
更新:
這是Memory
類:
class Memory: NSObject, NSCoding {
var masteryLevel: Int
var algorithm: [Int: Double]
var forgetRatio: Int
var lastStudyTime: Date
var strength: Double = 0
var front: Any
var back: Any
static let DocumentsDirectory = FileManager().urls(for: .documentDirectory, in: .userDomainMask)[0]
static let ArchiveURL = DocumentsDirectory.appendingPathComponent("Memory")
init(masteryLevel: Int, algorithm: [Int: Double], forgetRatio: Int, lastStudyTime: Date, front: Any, back: Any){
self.masteryLevel = masteryLevel
self.algorithm = algorithm
self.forgetRatio = forgetRatio
self.lastStudyTime = lastStudyTime
self.front = front
self.back = back
}
...
}
對於payload_data,看到https://medium.com/@ vhart/protocols-generics-and-existential-containers-wait-what-e2e698262ab1#.947l6tczk 你的Memory類是什麼樣的? –
@AndreasOetjen謝謝,請參閱更新 –