2016-06-02 9 views
3

Ich bin Fetching Entity Data Von Coredata, das ANYOBJECT gibt, habe ich viel versucht, in NSDictionary und NSArray zu konvertieren, aber es kann jede type.`Von Coredata Fetching gibt 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) 
      } 

Angebot Entity Nein nicht gegossen enthält Von Feldern. Freundlich helfen. Es wird geschätzt werden.

   print("result: ",result) 
       print("dictData:",dictData) 

`}

Antwort

5

context.executeFetchRequest() kehrt [AnyObject], nicht AnyObject.

Sie tun müssen:

if let results = context.executeFetchRequest(fetchRequest2) as? [MyObjectType] { 
     for object in results { 
     //do thing 
    } 
    } 
+0

können Sie [MyObjectType] –

+1

erklären Das ist was auch immer Ihr Entity-Typ ist. – sschale

1

Nach seiner Unterschrift executeFetchRequest kehrt immer ein Array von AnyObject. AnyObject, da der Rückgabewert abhängig von der Abrufanforderung NSManagedObject oder Dictionary sein kann.

Der Standardrückgabewert ist ein nicht optionale[NSManagedObject] so

let result2 = try context.executeFetchRequest(fetchRequest2) as! [NSManagedObject] 

die erzwungene Abwickeln des Typs schreiben sicher ist, dann ist dies der Fall, gibt es keine Notwendigkeit an optionalen Bindungen.

Wenn Sie eine Unterklasse von verwenden, können Sie den Rückgabewert sogar auf diesen Typ umwandeln.

+0

Ich verstehe, dass es NsmanagedObject zurückgibt aber kann ich Nsmanagedobject in Nsdictionary oder Nsarray umwandeln? Ich brauche eine weitere Erklärung –

+0

Es gibt '[NSManagedObject]' zurück. Verwenden Sie nicht 'NSDictionary' oder' NSArray', verwenden Sie die Swift-Typen 'Dictionary' und' Array'. '[NSManagedObject]' ** ist ** ein Array. – vadian

+0

[NSManagedObject] ist ein Array von Wörterbüchern. Sie können es wie jedes andere Array verwenden. – Starlord