2016-08-03 14 views
-1

下のコード行を実行すると、エラーメッセージ 'Swift.Int16型の値をSwift.AnyObjectにキャストできませんでした'が表示されます。エラーがラインに発生します。Swift:Swift.Int16型の値をSwift.AnyObjectにキャストできません

'newWorkout.setValue(ANYOBJECT、forKeyとしてtotalTimeConverted:! "workoutTime")'

ワークアウトは、私のエンティティの名前です。これには2つの属性があります。タイプNSDateの

  • workoutDate

  • タイプInt16型のworkoutTime。 Int16オブジェクト、原始的ではないためだ

    let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let context: NSManagedObjectContext = appDel.managedObjectContext 
    
    
    let newWorkout = NSEntityDescription.insertNewObjectForEntityForName("Workout", inManagedObjectContext: context) as! Workout 
    
    let totalTimeConverted = Int16(totalTime) 
    
    // Add parameters 
    newWorkout.setValue(totalTimeConverted as! AnyObject, forKey: "workoutTime") 
    newWorkout.setValue(NSDate(), forKey: "workoutDate") 
    
    
    do { 
        try context.save() 
    } catch { 
        print("Error saving data") 
    } 
    
    
    do { 
        let request = NSFetchRequest(entityName: "Workout") 
        let results = try context.executeFetchRequest(request) 
        if results.count > 0 { 
    
        for item in results as! [NSManagedObject]{ 
    
         let time = item.valueForKey("workoutTime") 
         let workoutDate = item.valueForKey("workoutDate") 
         print(time!, workoutDate!) 
    
        } 
        } 
    } catch{ 
        print("Error loading data") 
    } 
    
+1

を行うためにNSIntegerを使用することができますか? –

答えて

0

Int16AnyObjectにキャストできません。値の型であり、クラスではありません。

あなたはAnyObject` `にキャストされているなぜあなたは適切な型キャストに

newWorkout.setValue(NSInteger(totalTimeConverted), forKey: "workoutTime") 
+0

ありがとう、これは完全に動作します。私はworkoutDateの値がnilであるコードを実行するときに尋ねることができます。これは何の理由ですか? –

+0

なぜそれがゼロになるのか明らかな理由はありません。いくつかのデバッグが必要です。 –

0

、単に「ANYOBJECT」にキャストすることはできませんされています。

Dalija Prasnikar's answerが指摘するように、NSNumberオブジェクトに番号をラップすることができます。

+0

私はcoredataを使うのが初めてで、この方法をお勧めしました。私はそれにコードを変更すると、私はエラー 'タイプ'ワークアウトは、添え字のメンバーを持っていない ' –

+0

問題はありません。とにかくあなたの返事をありがとう! –

関連する問題