【发布时间】:2019-07-01 15:34:34
【问题描述】:
我是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)=
【问题讨论】:
标签: swift core-data nsmanagedobject