2015-01-01 5 views
0

핵심 데이터에서받은 데이터를 사전 순으로 정렬 할 수있게되었습니다. 이제 각 문자의 섹션에 사용자 이름을 입력하겠습니다. 이 작업을 수행하는 가장 쉬운 방법은 NSFetchedResultsController를 사용하는 것이지만 이해할 수는 없습니다 (Swift를 다루는 자습서가 거의 없음).Swift - 섹션의 코어 데이터 정렬

그래서 내 코드는 다음과 같습니다

override func viewDidAppear(animated: Bool) { 

    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
    let context:NSManagedObjectContext = appDel.managedObjectContext! 
    let freq = NSFetchRequest(entityName: "Message") 
    let en = NSEntityDescription.entityForName("Message", inManagedObjectContext: context) 

    let fetchRequest = NSFetchRequest(entityName: "Message") 
    let sortDescriptor = NSSortDescriptor(key: "username", ascending: true) 
    fetchRequest.sortDescriptors = [sortDescriptor] 

    myList = context.executeFetchRequest(fetchRequest, error: nil) as [Model] 

    tv.reloadData()  
} 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ 

    return myList.count 
} 

내가 기대했다 누군가가 NSFetchedResultsController를 통해 되거 나 내 방식에서 얻을 수 있도록 할 수있다. 내가 완전히 잘못 아니에요 경우 나는 "캐시 이름"을 알아낼 수 있지만

는, 초기화는 다음과 같은 :

let resultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: myList, sectionNameKeyPath: "username", cacheName: <#String?#>) 

진행 방법에 대한 어떤 제안을 감상 할 수있다.

+0

[NSFetchedResultsController 클래스 설명서] (https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/index.html#//apple_ref/occ/instm/NSFetchedResultsController/initWithFetchRequest)를 읽었습니까? : managedObjectContext : sectionNameKeyPath : cacheName :)'cacheName' 매개 변수를 설명합니다. 그 중 어느 부분이 의미가 없습니까? –

+0

@TomHarrington 이것은 실제로 간단한 대답이 아닙니다. 그것은 일시적인 핵심 데이터, NSManagedObject 서브 클래 싱, 그리고 마지막으로 NSFetchedResultsController를 사용하여 ... 그리고 캐시가 필요하지 않습니다. 나는 대답을 쓰는 것을 고려하고있다. 그러나 그것은 reeaaally long 일 것이다. ... –

+0

"일시적인"핵심 데이터 란 무엇인가? –

답변

1

Xcode 템플릿의 코드를 복사하고 미세 조정하여 가져온 결과 컨트롤러를 쉽게 설정할 수 있습니다. (Master-Detail이라는 새 프로젝트를 만들고 "Core Data 사용"을 확인하고 MasterViewController에서 복사하십시오.)

다음은 이상적인 솔루션은 아니지만 귀하의 경험 수준에 적합하다고 생각합니다. username 특성을엔터티 개체에 추가 할 때 첫 번째 문자가있는 다른 특성도 추가하십시오. 그런 다음 가져온 결과 컨트롤러를 만들 때이 새로운 속성의 이름sectionNameKeyPath 매개 변수로 사용하십시오.

캐시 매개 변수에 대해 너무 걱정하지 마십시오. "Root"과 같이 문자열을 넣거나 nil을 전달해도 대부분의 사용 사례에서 사용 가능한 캐시를 사용하지 않아도됩니다.

관련 문제