swift - 核心数据问题 Swift

标签 swift core-data swift3

你好,我目前正在学习使用旧版本 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/

相关文章:

ios核心数据: How to change NSManagedObject without saving it to the context

ios - 尝试更改 UIAlertController 的消息颜色时应用程序崩溃,swift

swift - float 数学方程式没有按预期工作

在 Swift 中将 CGFloat 转换为 Float

swift - Xcode swift UI 测试对比两张截图

ios - 变量 'myCellChoice' 从未在 didSelectRowAt indexPath 函数的 if 语句内发生变化

objective-c - 处理 addPersistentStoreWithType 中的错误

ios - Core Data 不会对更改的谓词使用react

ios - Facebook 登录在 IOS SDK 中不起作用

swift - '#selector' 的参数不引用 '@objc' 方法 (swift 3)