【发布时间】:2015-08-29 17:29:48
【问题描述】:
为什么不能将 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 的计数?
【问题讨论】:
-
您不能将数字转换为数组,因为它们几乎不是同一类型的对象。
-
同样的原因我不能把我的车变成大象。它不是一个,并且说它是并没有使它如此。 favCategory 的值是 NSNumber,而不是数组,因此您的强制向下转换失败
-
嘿,如果
dataObjects为 nil,你的 for 循环不会崩溃吗? (如果发生错误并且您的 fetch 请求抛出) -
@KelvinLau 是的 - 特别是
as!断言如果结果是错误的会导致崩溃 -
@AaronBrager 确认。开始使用
guardOP!