无法将“__NSCFNumber”类型的值 () 转换为 'NSArray' swift
Could not cast value of type '__NSCFNumber' () to 'NSArray' swift
为什么不能将 NSCFNumber(核心数据)转换为 NSArray?
错误:
Could not cast value of type '__NSCFNumber' (XXXXXXXX) to '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
的计数?
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)
}
Core Data 首先不能存储数组或字典。记得以前学习的时候遇到过这个问题。
又名,您的 dataObjects
数组没有任何可以类型转换为 NSArray
的内容。这样做的方法是建模一个对多关系(它创建一个Set
),它可以模仿一个数组。
为什么不能将 NSCFNumber(核心数据)转换为 NSArray?
错误:
Could not cast value of type '__NSCFNumber' (XXXXXXXX) to '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
的计数?
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)
}
Core Data 首先不能存储数组或字典。记得以前学习的时候遇到过这个问题。
又名,您的 dataObjects
数组没有任何可以类型转换为 NSArray
的内容。这样做的方法是建模一个对多关系(它创建一个Set
),它可以模仿一个数组。