在尝试将一些小的现有代码移植到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中。

最佳答案

该错误具有误导性。

完全是在说“我不知道任何返回可变数组的函数”

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

typevar更改为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);

07-24 14:16