2014-12-19 3 views
1

간단히 말해 DOWJONES라는 엔티티가 있습니다. AAPL과 AAPL_NSDate와 같은 모든 오브젝트에 대해 두 가지 속성이 있습니다. ValueForKey : AAPL은 주가 기록을 반환하고 ValueforKey AAPL_NS는 해당 날짜를 반환합니다.핵심 데이터 : Swift에서 속성이있는 모든 개체를 삭제하려면 어떻게해야합니까?

신속하고 효율적으로 주식 가격 기록 및 해당 날짜를 신속하게 삭제할 수 있습니까?? 크리스 - 바그너 @에서 제안한 것처럼

var appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    let context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext! 

    var request = NSFetchRequest(entityName: "DOWJONES") 
    request.returnsObjectsAsFaults = false 
    var dowjones = context.executeFetchRequest(request, error: nil)! as [DOWJONES] 
    var aapl = (dowjones as NSArray).valueForKey("AAPL") as NSArray 

이 나는 ​​결과를 반복하고 삭제할 수있는 방법입니다 :
이 내가 쿼리 방법이다.

func deleteCoreDataObjects(){ 
    var request = NSFetchRequest(entityName: "DOWJONES") 
    request.returnsObjectsAsFaults = false 
    var dowjones = context.executeFetchRequest(request, error: nil)! 

    if dowjones.count > 0 { 

     for result: AnyObject in dowjones{ 
      context.deleteObject(result as NSManagedObject) 
      println("NSManagedObject has been Deleted") 
     } 
     context.save(nil) 
    } 
} 

답변

3

NSPersistentStoreCoordinatorexecuteRequest(_ request: NSPersistentStoreRequest, withContext context: NSManagedObjectContext, error error: NSErrorPointer) 방법을 사용하여 iOS 8부터 직접 데이터 저장소에 배치 요청을 할 수 있습니다.

페치 요청과 마찬가지로 영구 저장소 요청을 만든 다음 위의 방법을 사용하여 PSC에 전달합니다.

그러나이 방법으로 삭제하려는 개체에 대한 컨텍스트 내 참조가 없어야합니다.

여기에 대한 좋은 설명이 here입니다.

+0

TIL! 계속 따라 가기 위해 :) –

2

가져 오기 요청의 결과를 반복하고 각각에 self.context.deleteObject(_:)을 호출하십시오.

+0

한 번에 모두 삭제하는 것과 같은 빠른 방법이 있습니까? – KML

+0

아니, 내가 본 것은 아니야. 이 작업을 자주 수행하는 경우 편리한 방법을 쓸 수 있습니다.) –

관련 문제