Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode Swift-此类不符合密钥uri的键值编码_Ios_Swift_Xcode_Core Data - Fatal编程技术网

Ios Xcode Swift-此类不符合密钥uri的键值编码

Ios Xcode Swift-此类不符合密钥uri的键值编码,ios,swift,xcode,core-data,Ios,Swift,Xcode,Core Data,我正在尝试将数据添加到核心数据中,我认为我在正确的轨道上(我对这一点相当陌生,因此,抱歉),从下面的代码中,我的“目标”是检查核心数据,如果它是空的,则添加默认数据 代码: 音乐。斯威夫特: extension Music { @NSManaged var voiceover: String? @NSManaged var xfade: NSNumber? @NSManaged var duration: NSNumber? @NSManaged var starttime: NSNumber

我正在尝试将数据添加到核心数据中,我认为我在正确的轨道上(我对这一点相当陌生,因此,抱歉),从下面的代码中,我的“目标”是检查核心数据,如果它是空的,则添加默认数据

代码:

音乐。斯威夫特:

extension Music {

@NSManaged var voiceover: String?
@NSManaged var xfade: NSNumber?
@NSManaged var duration: NSNumber?
@NSManaged var starttime: NSNumber?
@NSManaged var uri: String?

}
但是我不断得到错误“这个类不符合密钥uri的键值编码”,我确信这将适用于所有的.setValues。我不知道为什么会显示为defaultMusic有“uri”字段,defaultMusic也是Music对象的一个实例。.setValue的格式是否错误?还是别的什么

任何帮助都会很好


提前谢谢

defaultMusic
NSEntityDescription
,而不是
Music
对象


(有时让Swift使用默认数据类型可能会令人困惑。)

我怀疑您的意思是:

检查实体是否为空,如果为空,则插入具有默认值的新对象

class func musicIsEmpty(managedObjectContext: NSManagedObjectContext)-> Bool {

  let musicEntity = NSEntityDescription.entityForName("Music", inManagedObjectContext: managedObjectContext)!      
  let fetchRequest = NSFetchRequest()
  fetchRequest.entity = musicEntity
  do {
    let musicSetResults =  try managedObjectContext.executeFetchRequest(fetchRequest) as! [Music]
    if musicSetResults.isEmpty
    {
      let defaultMusicSetOne = NSManagedObject(entity: musicEntity, insertIntoManagedObjectContext: managedObjectContext) as! Music
      defaultMusicSetOne.uri = "spotify:track:1puJlKuYGH58SAFgXREUpE"
      defaultMusicSetOne.duration = 30.0
      defaultMusicSetOne.starttime = 49.0
      defaultMusicSetOne.xfade = 10.0
      defaultMusicSetOne.voiceover = "1.25s Next Up.mp3"
      return true
    }
  }
  catch let error as NSError{
    print("Error: \(error.debugDescription)")
  }
  return false
}

您还可以考虑保存托管对象上下文以使新对象持久化。

什么类型是“代码> URI < /代码>?错误基本上是这样的:“我希望键uri是X类型,但您给了我Y类型”。另外,您从哪里得到错误?在
中,如果MusicSetResults==0
?uri是字符串类型,如果MusicSetResults==0,则错误在侧边,我在其中设置了.setValue。您为什么通过
setValue
设置这些值?你就不能正常设置它们吗?我是IOS/Xcode/Swift->新手,我只是在学习教程。其中大多数都显示“person.setValue(“Bart”,forkey:“name”)”,所以我只是想用它。是否不需要使用setValue?啊,好的!我明白了,我应该使用
defaultMusicSetOne!而不是“defaultMusic”!。setValue(defaultMusicSetOne?.uri,forKey:“uri”)
Hey!谢谢是的,这就是我从你上次的评论中改变的。是的,我正在尝试实现save托管对象,就像我们说的lol一样
class func musicIsEmpty(managedObjectContext: NSManagedObjectContext)-> Bool {

  let musicEntity = NSEntityDescription.entityForName("Music", inManagedObjectContext: managedObjectContext)!      
  let fetchRequest = NSFetchRequest()
  fetchRequest.entity = musicEntity
  do {
    let musicSetResults =  try managedObjectContext.executeFetchRequest(fetchRequest) as! [Music]
    if musicSetResults.isEmpty
    {
      let defaultMusicSetOne = NSManagedObject(entity: musicEntity, insertIntoManagedObjectContext: managedObjectContext) as! Music
      defaultMusicSetOne.uri = "spotify:track:1puJlKuYGH58SAFgXREUpE"
      defaultMusicSetOne.duration = 30.0
      defaultMusicSetOne.starttime = 49.0
      defaultMusicSetOne.xfade = 10.0
      defaultMusicSetOne.voiceover = "1.25s Next Up.mp3"
      return true
    }
  }
  catch let error as NSError{
    print("Error: \(error.debugDescription)")
  }
  return false
}