我从coreData获取实体数据,返回AnyObject,我尝试了很多转换为NSDictionary和NSArray,但它不能转换任何类型。
var dictData:NSDictionary?
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context = appDelegate.managedObjectContext;
// self.selectedArray = response.objectForKey("retailers") as! NSArray;
let fetchRequest2 = NSFetchRequest()
let entityDescription2 = NSEntityDescription.entityForName("Offers", inManagedObjectContext: context)
fetchRequest2.entity = entityDescription2
//fetchRequest2.returnsObjectsAsFaults = false
do {
let result2 : NSDictionary = try context.executeFetchRequest(fetchRequest2) as! NSDictionary
print("Result:",result2)
for result in (result2 as? NSDictionary)!{
if let data : NSDictionary = result as? NSDictionary{
print(data)
}
优惠实体包含否字段。请帮助。它会受到赞赏。
print("result: ",result)
print("dictData:",dictData)
`}
答案 0 :(得分:5)
context.executeFetchRequest()
返回[AnyObject]
,而不是AnyObject
。
你需要这样做:
if let results = context.executeFetchRequest(fetchRequest2) as? [MyObjectType] {
for object in results {
//do thing
}
}
答案 1 :(得分:1)
根据其签名executeFetchRequest
,始终返回AnyObject
的数组。 AnyObject,因为返回值可以是NSManagedObject
或Dictionary
,具体取决于获取请求。
默认返回值是非可选 [NSManagedObject]
所以写
let result2 = try context.executeFetchRequest(fetchRequest2) as! [NSManagedObject]
这种类型的强制解包是安全的,这种情况下,不需要可选的绑定。
如果您使用的是NSManagedObject
的子类,您甚至可以将返回值强制转换为该类型。