Ios 从CoreData获取返回任何对象

Ios 从CoreData获取返回任何对象,ios,swift,core-data,Ios,Swift,Core Data,我从coreData中获取实体数据,它返回任何对象,我在NSDictionary和NSArray中尝试了很多转换,但它不能转换任何类型 var dictData:NSDictionary? let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context = appDelegate.managedObjectContext; // self.select

我从coreData中获取实体数据,它返回任何对象,我在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)
报价实体不包含任何字段。请帮忙。我们将不胜感激

    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)

`}

context.executeFetchRequest()
返回
[AnyObject]
,而不是
AnyObject

    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)
您需要执行以下操作:

    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)
if let results = context.executeFetchRequest(fetchRequest2) as? [MyObjectType] {
      for object in results {
        //do thing
    }
  }

根据其签名,executeFetchRequest始终返回
任意对象的数组。AnyObject,因为返回值可以是
NSManagedObject
Dictionary
,具体取决于获取请求

    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)
默认返回值是非可选的
[NSManagedObject]

    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)
let result2 = try context.executeFetchRequest(fetchRequest2) as! [NSManagedObject]
该类型的强制展开是安全的。在这种情况下,不需要可选绑定

    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)

如果您使用的是
NSManagedObject
的子类,您甚至可以将返回值转换为该类型。

您能解释一下[MyObjectType]是什么实体类型吗?我知道它返回NSManagedObject,但我能将NSManagedObject转换为nsdictionary或nsarray吗?我需要进一步解释它返回
[NSManagedObject]
。不要使用
NSDictionary
NSArray
,使用Swift原生类型
Dictionary
数组
<代码>[NSManagedObject]
是一个数组。[NSManagedObject]是一个字典数组。可以像使用任何其他数组一样使用它。
    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)