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)
        }

更新: 我怎样才能收到 Count of dataSelected

4

2 回答 2

1

Core Data 首先不能存储数组或字典。记得以前在学习的时候遇到过这个问题。

AKA,您的dataObjects数组没有任何可以类型转换为NSArray. 做到这一点的方法是模拟一个Set可以模仿数组的对多关系(创建一个 )。

于 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 回答