2015-01-02 45 views
3

我無法弄清楚這裏有什麼問題。核心數據錯誤:'AnyObject'沒有名爲'Generator'的成員

該代碼只需將usernamepassword添加到實體「用戶」,然後檢索它。

代碼工作正常,直到我在其中添加for循環。我甚至嘗試鑄造AnyObjectNSManagedObject(這是不是就我所知需要)

代碼:

import UIKit 
import CoreData 

class ViewController: UIViewController { 

override func viewDidLoad() { 
super.viewDidLoad() 
// Do any additional setup after loading the view, typically from a nib. 

var appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 

var context:NSManagedObjectContext = appDel.managedObjectContext! 

var newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 

newUser.setValue("Rob", forKey: "username") 

newUser.setValue("pass", forKey: "password") 


context.save(nil) 

var request = NSFetchRequest(entityName: "Users") 

request.returnsObjectsAsFaults = false 

var results = context.executeFetchRequest(request, error: nil) 

println(results) 

if results?.count > 0 { 

for result: AnyObject in results!{ 


println(result) 

} 

} else { 

println("No results") 

} 

} 

override func didReceiveMemoryWarning() { 
super.didReceiveMemoryWarning() 
// Dispose of any resources that can be recreated. 
} 


} 

錯誤顯示在for循環線路:for results

+0

我已經逐字複製您的代碼放到一個典型的核心數據的應用程序,並能順利完成編譯。但這可能是有用的:http://stackoverflow.com/questions/26458209/how-to-print-out-value-from-coredata-dictionary-in-swift-anyobject-does-not-ha。 –

+0

@MartinR謝謝..作品完美..我已經投票了.. bt不幸的是我沒有15聲望..總之..再次感謝 –

回答

0

嘗試下面的東西。

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
let managedContext = appDelegate.managedObjectContext! 


//Adding part... 
var entity = NSEntityDescription.entityForName("Users", inManagedObjectContext: managedContext) 
var user= NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) 
user.setValue("Rob", forKey: "username") 
user.setValue("Pass", forKey: "password") 
var error : NSError? 
if !managedContext.save(&error) { 
    println("Could not save \(error), \(error?.userInfo)") 
} 

//Fetching part... 
let fetchRequest : NSFetchRequest = NSFetchRequest(entityName: "Users") 
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]? 
if let results = fetchedResults { 
    for result in results { 
      //Consider that the results are array of NSManagedObject, 
      //so the value have to be unwrapped by the key. ie., result.valueForKey("username") as String 
      println("\(result)") 

} 

希望這會有所幫助。

1

for循環更改這個

for result: AnyObject in results! { 

      if let user: AnyObject = result.valueForKey("username") { 

       println(user) 

      } 

     } 

使用valueForKey是重要的組成部分

+0

爲我工作,謝謝! –

相關問題