私は正しいデータにコアデータを追加しようとしています(これはかなり新しく、 apologies)下のコードから、私の '目標'はコアデータをチェックし、空であればデフォルトのデータを追加することです。Xcode Swift - このクラスはキーのキーコードに準拠していませんuri
コード:
class func musicIsEmpty(managedObjectContext: NSManagedObjectContext)-> Bool{
let defaultMusic = NSEntityDescription.entityForName("Music", inManagedObjectContext: managedObjectContext)
let defaultMusicSetOne = NSManagedObject(entity: defaultMusic!, insertIntoManagedObjectContext: managedObjectContext) as? Music
//defaultMusicSetOne = NSManagedObject(entity: defaultMusic!, insertIntoManagedObjectContext: managedObjectContext) as? Music
let fetchRequest = NSFetchRequest(entityName: "Music")
fetchRequest.entity = defaultMusic
defaultMusicSetOne!.uri = "spotify:track:1puJlKuYGH58SAFgXREUpE"
defaultMusicSetOne!.duration = 30.0
defaultMusicSetOne!.starttime = 49.0
defaultMusicSetOne!.xfade = 10.0
defaultMusicSetOne!.voiceover = "1.25s Next Up.mp3"
do{
if let MusicSetResults = try managedObjectContext.executeFetchRequest(fetchRequest) as? [NSManagedObject]{
if MusicSetResults == 0
{
defaultMusic!.setValue(defaultMusicSetOne?.uri, forKey: "uri")
defaultMusic!.setValue(defaultMusicSetOne?.duration, forKey: "duration")
defaultMusic!.setValue(defaultMusicSetOne?.starttime, forKey: "starttime")
defaultMusic!.setValue(defaultMusicSetOne?.xfade, forKey: "xfade")
defaultMusic!.setValue(defaultMusicSetOne?.voiceover, forKey: "voiceover")
return true
}
else
{
return false
}
}
}
catch let error as NSError{
print("Error: \(error.debugDescription)")
}
return false
}
がMusic.Swift:
extension Music {
@NSManaged var voiceover: String?
@NSManaged var xfade: NSNumber?
@NSManaged var duration: NSNumber?
@NSManaged var starttime: NSNumber?
@NSManaged var uri: String?
}
しかし、私はエラーが私はこの確信している「このクラスは、キー値コーディング準拠のキーURIのではない」得続けますすべての.set値に適用されます。私はdefaultMusicに "uri"フィールドがあり、defaultMusicもMusic Objectのインスタンスであるため、なぜこれが表示されているのか分かりません。 .setValueの形式が間違っていますか?それとも何か他のことですか?
助けがあれば助かります。
ありがとうございます!
どのようなタイプの 'uri'ですか?エラーは、基本的に "私は主要なURIがX型であることを期待していますが、あなたは私にY型を与えました"と言います。また、どこでエラーが発生しますか? 'MusicSetResults == 0'の場合は? – Lawrence413
uriはString型ですが、MusicSetResults == 0の場合はエラーです。 –
なぜこれらの値を 'setValue'で設定しますか?あなたはそれらを普通に設定できませんか? – Sweeper