클래스 함수가 있는데이 클래스 함수에서이 추상 엔티티 클래스를 확장하는 클래스의 이름을 원합니다. ,클래스 함수의 클래스 반환 클래스 이름
class AbstractEntity {
class func findOrCreateEntity() -> AnyObject? {
print("Name: \(NSStringFromClass(Mirror(reflecting: self)))")
}
}
유일한 문제는, 예를 들어 클래스 차량이 AbstractEntity를 확장한다는 것입니다 그것은이 Car.Type를 인쇄하는 방법을 호출
나는 미러 타입 그래서 나는 이런 식으로 뭔가를이 작업을 수행 할 수있는 발견 이것은 정확하지만 .Type 확장자는 원하지 않습니다. 클래스 이름을 얻는 방법이 있습니까?
가능한 경우 신속하게 처리하고 싶습니다. 나는 명확성을 위해
.. NSObject의의 exnteions 다음 NSStringFromClass 일을 알고 : 내 AbstractEntity 내 모델에서 모든 엔티티의
이class AbstractEntity: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
class func findOrCreateEntityWithUUID(entityName: String, uuid: String, context: NSManagedObjectContext) -> AnyObject? {
let request = NSFetchRequest(entityName: entityName)
request.returnsObjectsAsFaults = false;
let predicate = NSPredicate(format: "uuid = %@", uuid)
request.predicate = predicate
do {
var results = try context.executeFetchRequest(request)
if results.count > 0 {
return results[0]
} else {
let entity = NSEntityDescription.entityForName(entityName, inManagedObjectContext: context)
let abstractEntity = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: context)
abstractEntity.setValue(uuid, forKey: "uuid")
return abstractEntity
}
} catch let error as NSError {
DDLogError("Fetch failed: \(error.localizedDescription)")
}
return nil
}
}
이 확장됩니다. 그래서 나는 내 논리를 원한다.
예를 들어 저는 Car 엔티티가 있고 Car.find를하고 싶습니다 ... 그리고 나에게 자동차를 돌려줍니다. 그래서 (NSFetchRequest (entityName : entityName)) NSFetchRequest를 사용하여 클래스 이름을 가져올 수 있도록 클래스 이름이 필요하다. 이제 entityName을 전달합니다. 가져오고 싶지만 자동차를 할 때 추한 것 같아요. 알아보십시오. 차를 원한다는 것을 알고 있습니다.
이 기능을 일반화하면 T.self를 사용할 수 없습니까? – jjatie
각 클래스가 원하는 형식으로 고유 한 이름을 반환 할 수없는 이유는 무엇입니까? – Droppy
핵심 데이터 유형에 대한 함수입니다. 그래서 AbstractEntity를 가지고 있으며, 클래스를 확장하는 다른 모든 것을 찾아서 생성하기위한 로직을 묶고 싶습니다. 그래서 나는 T를 사용할 수 있다고 생각하지 않습니까? 도적질 어떻게 지내니? Car.findOrCreateEntity를 수행하고 AbstractEntity에서 핵심 데이터에서 Car 엔티티를 가져와야하므로 Car라는 이름이 필요합니다. – user1007522