我是swift
的新手。我正在尝试创建一个核心数据NSManagedObject
类,就像我在Objective-C
中所做的那样。
在Objective-C中,我将创建类似
+ (Countries *)countryWithName:(NSString *)name
inManagedObjectContext:(NSManagedObjectContext *)context {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:NSStringFromClass([self class])
inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(country == %@)", name];
request.predicate = predicate;
return [[context executeFetchRequest:request error:nil] lastObject];
}
因此,在任何时候我都想在核心数据上按名称获取国家/地区
userCountry = [Countries countryWithName:@"United States" inManagedObjectContext:self.managedObjectContext];
但是在使用swift创建NSManagedObject
类之后,我看到Xcode在Countries+CoreDataProperties.swift
内部创建了这段代码
@nonobjc public class func fetchRequest() -> NSFetchRequest<Countries> {
return NSFetchRequest<Countries>(entityName: "Countries")
}
@NSManaged public var number: Int16
@NSManaged public var name: String?
@NSManaged public var shortcut: NSData?
现在,我想创建我的类countryByName
函数。第一行应该是
let fetchRequest = NSFetchRequest(entityName: "Countries")
但是fetchRequest()
已经创建。
我该怎么使用?
它不会让我使用
let request = Countries.fetchRequest()
给我一个错误Ambiguous use of fetchRequest)=
答案 0 :(得分:2)
您在 class ApiAdminController extends Controller
{
/**
* @Route("/api/admin/parametre")
* @Method("GET")
*/
public function getParametreAction(Request $request){
return JsonResponse([
new Specialite("chirurgie"),
new Specialite("oncologie"),
]);
}
}
声明中使用了两个不同的实体Countries
和Atributos
。那确实是模棱两可的。该实体必须是唯一的。
fetchRequest()
您必须使用它
@nonobjc public class func fetchRequest() -> NSFetchRequest<Countries> {
return NSFetchRequest<Countries>(entityName: "Countries")
}
注意:强烈建议以单数形式命名实体。语义上,每条记录代表一个let fetchRequest : NSFetchRequest<Countries> = Countries.fetchRequest()
而不是一个Country
。应该只将多个关系命名为复数形式。
答案 1 :(得分:1)
获取请求是通用的,因此您必须指定类型,例如:
let request: NSFetchRequest<Countries> = Countries.fetchRequest()