你好,我目前正在学习使用旧版本 Swift 的 Swift 教程,但我无法遵循此教程,因为我认为语法在新版本的 Swift 中发生了变化。
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("Joe", forKey: "username")
newUser.setValue("pass", forKey: "password")
do {
try context.save()
} catch let error {
print("Couldn't save user data")
print(error)
}
let request = NSFetchRequest(entityName: "Users")
request.returnsObjectsAsFaults = false
// var results = context.executeFetchRequest(request)
do {
var results =
try context.executeFetchRequest(request)
results = results as! [NSManagedObject]
} catch let error as NSError {
print(error)
}
for result: AnyObject in results {
print(results)
}
}
我收到的错误与 result: AnyObject in results 行的结果有关,错误是未解析的标识符 'results' 这给我的印象是这应该在某处声明为变量目前尚未解决,但我不知道如何解决这个问题,非常感谢任何帮助,谢谢!
最佳答案
do {
var results = try context.executeFetchRequest(request)
results = results as! [NSManagedObject]
} catch let error as NSError {
print(error)
}
for result: AnyObject in results {
print(results)
}
results
仅在 do
block 内有作用域。您需要将数组的处理移到 do
中:
do {
var results = try context.executeFetchRequest(request)
results = results as! [NSManagedObject]
for result in results {
print(results)
}
} catch let error as NSError {
print(error)
}
此外,转换为 AnyObject
也不需要丢失信息。
关于swift - 核心数据问题 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592609/