0

データを保存して、単純な CoreData タスクを実行しようとしています。Beta 6 では動作するはずですが、Beta 7 にアップデートしてからエラーが発生し始めました。

「?」を追加する必要があると思います。また '!' エラーのヒントに基づいていますが、どこにあるかを理解するほど賢くありません!

    @IBAction func saveItem(sender: AnyObject) {

    // Reference to App Delegate

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate

    // Reference our moc (managed object content)

    let contxt: NSManagedObjectContext = appDel.managedObjectContext!
    let ent = NSEntityDescription.entityForName("List", inManagedObjectContext: contxt)

    // Create instance of our data model and initialize

    var newItem = Model(entity: ent, insertIntoManagedObjectContext: contxt)

    // Map our attributes

    newItem.item = textFieldItem.text
    newItem.quanitity = textFieldQuantity.text
    newItem.info = textFieldInfo.text

    // Save context

    contxt.save(nil) 
}

エラーは言う

Value of optional type 'NSEntityDescription?' not unwrapped; did you mean to use '!' or '?'

ラインで

var newItem = Model(entity: ent, insertIntoManagedObjectContext: contxt)

エラーをクリアして正常にコンパイルされたように見えるたびに、「保存」をクリックするとデバッグ領域に表示されます

fatal error: unexpectedly found nil while unwrapping an Optional value
4

2 に答える 2

0

エラーはかなり些細なもので、ここで分析することはあまりありません。これを変更してみてください:

let ent = NSEntityDescription.entityForName("List", inManagedObjectContext: context)

これに

let ent = NSEntityDescription.entityForName("List", inManagedObjectContext: context)!

いつものように、初心者は明らかな兆候を見落とす傾向があります。エラーは、オプションが type であることを明確に示していますNSEntityDescription。そして、指定されたコードでインスタンス化されているこのタイプのオブジェクトしかないことを考えると、エラーがどこにあるかを推測するのに天才は必要ありません。

Value of optional type 'NSEntityDescription?' not unwrapped; did you mean to use '!' or '?'

また、ここで NSEntityDescription オブジェクトをインスタンス化するために使用されるメソッドは、次のように宣言されます。

class func entityForName(entityName: String, inManagedObjectContext context: NSManagedObjectContext) -> NSEntityDescription? 

...?このメソッドがオプションを返すことを明確に伝える文字。

于 2014-09-13T15:32:39.013 に答える