iOS Swift'无法找到成员executeFetchRequest'

时间:2014-06-06 09:37:14

标签: ios objective-c core-data swift

试图将一些小的现有代码移植到Swift我遇到了一些问题。 我可以在Objective-C

中执行以下操作
NSMutablArray *myMutableArray = [NSMutableArray array];
myMutablArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error].mutableCopy;

然而,在我试图在swift中尝试这个时,我得到'找不到成员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中查找。

2 个答案:

答案 0 :(得分:3)

该错误有点误导。

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

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

type的{​​{1}}更改为var,这是函数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)
    }
}

答案 1 :(得分:1)

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

我没有看到您创建的错误,看起来您有一个“本地”的managedObjectContext变量,但您尝试引用self。尝试:

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

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