1

NSCFNumber (コア データ) を NSArray にキャストできないのはなぜですか?

エラー:

タイプ '__NSCFNumber' (XXXXXXXX) の値を 'NSArray' (XXXXXXXX) にキャストできませんでした。

コード:

//Fetch Settings
    func fetchAccounSetting(){
        let entityDescription = NSEntityDescription.entityForName("UserSettings", inManagedObjectContext: Context!)
        let request = NSFetchRequest()
        //let data = UserSettings(entity: entityDescription!, insertIntoManagedObjectContext: Context)
        request.entity = entityDescription

        var dataObjects: [AnyObject]?

        do {
            dataObjects = try Context?.executeFetchRequest(request)
        } catch  let error as NSError {
            print(error)
            dataObjects = nil
        }

        for result in dataObjects as! [NSManagedObject] {
            let dataSelected = NSArray(array: result.valueForKey("favCategory")! as! NSArray)
            print(dataSelected)
        }

更新: のカウントを受け取るにはどうすればよいdataSelectedですか?

4

2 に答える 2

1

Core Data はそもそも配列や辞書を格納することができません。以前に学習していたときに、この問題に遭遇したことを覚えています。

AKA、あなたのdataObjects配列には、に型キャストできるものは何もありませんNSArraySetこれを行う方法は、配列を模倣できる対多関係 ( を作成する) をモデル化することです。

于 2015-06-13T23:33:51.840 に答える
0

result.valueForKey("favCategory")!数値を返していますが、配列を期待しているようです。

おそらくあなたは次のことを意味しました:

let dataSelected = [result.valueForKey("favCategory")!]

返されるタイプがわかっている場合は、オプションでキャストできます。

let dataSelected = [result.valueForKey("favCategory")!]

if let dataSelected = dataSelected as? [NSNumber] {
    // dataSelected is of type [NSNumber] a.k.a. Array<NSNumber>
    print(dataSelected)
}
于 2015-06-13T23:32:50.977 に答える