在尝试将一些小的现有代码移植到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是类型安全的,编译器会热情地执行它。
将type
的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)
}
}
如果需要可变数组,则需要进行显式转换
let results = self.managedObjectContext!.executeFetchRequest(request, error: &error)
myMutableArray = NSMutableArray(array: results);