我有一個名爲Chord
類的子類UILabel
:如何在Swift中使用CoreData存儲自定義對象?
import UIKit
class Chord: UILabel {
var numTextLine: Int?
var positionInTextLine: CGFloat?
var tempPosInLine: CGFloat?
init(chordName: String, dLine: DLine, xAxis: CGFloat, posInTextLine: CGFloat) {
// posInLine: CGFloat
let labelSize = chordName.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])
let labelPositionY = ((dLine.upLine.frame.height) - labelSize.height)/2
super.init(frame: CGRect(origin: CGPoint(x: xAxis, y: labelPositionY), size: labelSize))
self.numTextLine = dLine.numTextLine
self.positionInTextLine = posInTextLine
self.tempPosInLine = self.positionInTextLine
self.text = chordName
self.font = self.font.fontWithSize(14)
self.textAlignment = NSTextAlignment.Center
self.userInteractionEnabled = true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
//fatalError("init(coder:) has not been implemented")
}
}
而且我想持久保存的對象,使用CoreData稱爲Song
。 Song
對象有一個屬性,該屬性是Chord
的數組。所以我子類NSManagedObject
如下所示:
import Foundation
import CoreData
class Song: NSManagedObject {
@NSManaged var lyrics: NSString?
@NSManaged var chords: NSData?
@NSManaged var title: NSString?
@NSManaged var artist: NSString?
}
,基本上我卡住了。我已經在CoreData模型視圖中將該屬性的類型設置爲BinaryData
,並在獲取實體之後保存ManagedContext和NSKeyedArchiver.unarchiveObjectWithData(myObject) as? [Chord]
之前嘗試使用NSKeyedArchiver.archivedDataWithRootObject(myObject)
,但是當我取消存檔NSData
時,雖然我設置了as? [Chord]
,但仍得到UILabel
對象。
任何人都可以讓我走上正確的路?
好吧,我明白了,那就是我在此期間所做的(僅存儲用於構建uilabel的數據)。我現在明白爲什麼我試圖做的是一個壞主意。非常感謝您的回答。 –