![](/img/trans.png)
[英]Could not cast value of type '__NSCFNumber' to 'NSString' in Swift 2
[英]Could not cast value of type '__NSCFNumber' () to 'NSArray' swift
为什么不能将 NSCFNumber (Core Data) 转换为 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
的计数?
Core Data 一开始就不能存储数组或字典。 我记得之前在学习时遇到过这个问题。
又名,您的dataObjects
数组没有任何可以类型转换为NSArray
。 这样做的方法是对一对多关系建模(创建一个Set
),它可以模仿一个数组。
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)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.