【问题标题】:iOS Swift 'Could not find member executeFetchRequest'iOS Swift'找不到成员executeFetchRequest'
【发布时间】:2014-06-06 09:37:14
【问题描述】:

在尝试将一些现有的小型代码移植到 Swift 时,我遇到了一些问题。 我可以在 Objective-C 中执行以下操作

NSMutablArray *myMutableArray = [NSMutableArray array];
myMutablArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].mutableCopy;

但是,在我尝试快速尝试此操作时,我得到“找不到成员 executeFetchRequest”

class exampleTableViewController: UITableViewController {

  var managedObjectContext: NSManagedObjectContext? = nil
  var myMutableArray: NSMutableArray = NSMutablArray()

  override func viewWillAppear(animated: Bool) {        
      super.viewWillAppear(animated)

      var request = NSFetchRequest(entityName: "TestTable")
      var error: NSError? = nil

      self.myMutableArray = self.managedObjectContext!.executeFetchRequest(request, error: &error)       
   }
   ...
}

有人可以指点我正确的方向吗?

非常感谢

编辑:粘贴在 xcode 中的代码。

【问题讨论】:

  • 你在.managedObjectContext!之前有一个流浪的.manaself
  • @Cezar 是的,这是一个拼写错误,我不喜欢剪切/复制/粘贴。所以我手动输入了,但是谢谢
  • 你是在 Playground 还是在你的 Xcode 项目中尝试这个?
  • @theCodingError 对不起,我应该说 XCode 项目
  • 请复制/粘贴您的代码,不要进行任何编辑,这样我们就可以看到您实际使用的代码,而不是您认为正在使用的代码。

标签: ios objective-c core-data swift


【解决方案1】:

这个错误有点误导。

完整地说“我不知道任何返回可变数组的函数”

Swift 是类型安全的,编译器会热情地执行这一点。

vartype 更改为 NSArray ,这是函数 executeFetchRequest 返回的内容。

class exampleTableViewController: UITableViewController {

    var managedObjectContext: NSManagedObjectContext? = nil
    var myArray: NSArray? = nil;

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        var request = NSFetchRequest(entityName: "TestTable")
        var error: NSError? = nil

        self.myArray = self.managedObjectContext!.executeFetchRequest(request, error: &error)
    }
}

如果您想要一个可变数组,您需要进行显式转换

let results = self.managedObjectContext!.executeFetchRequest(request, error: &error)

myMutableArray = NSMutableArray(array: results);

【讨论】:

  • 我在前半个小时的代码上敲了敲代码来执行 fetch 请求,终于得到了你的答案。谢谢.....它工作......
【解决方案2】:

调用executeFetchRequest之前不需要初始化数组,调用会返回一个数组并销毁你已经创建的数组。

我没有看到您创建的错误,并且您似乎有一个“本地” managedObjectContext 变量,但您正试图引用 self.试试:

self.myMutableArray = managedObjectContext!.executeFetchRequest(request, error: &error)

假设您在第二个代码块中发布的两行之间没有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多