2014-07-16 2 views
0

에있는 NSArray의 요소 형식을 변환 어떻게 NSFetchedResultsController스위프트

let fetchRequest = NSFetchRequest(entityName: "User") 
     fetchRequest.sortDescriptors = [NSSortDescriptor(key: "recordName", ascending: true)] 

     _frcU = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: _managedObjectContext, sectionNameKeyPath: nil, cacheName: nil) 
     _frcU!.delegate = self 
     _frcU!.performFetch(nil) 

는 다음 numberOfRowsInSection 방법, 내가 첫 번째 섹션

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

      var numberOfRowsInSection = 0 
      if _frcU { 
/*here something wrong -> */ let o: NSFetchedResultsSectionInfo = _frcU?.sections().firstObject as NSFetchedResultsSectionInfo 
       numberOfRowsInSection = o.numberOfObjects 
      } 
     } 

에 행 번호를 확인 할 만들었지 만 그것은 말합니다 : ST6 (firstObject) 은 'NSFetchedResultsSectionInfo'프로토콜을 준수하지 않습니다.

왜 내가 어떻게 바꾸어야합니까? 그거야?

+0

'firstObject'의 반환 값을 NSFetchedResultsSectionInfo로 캐스팅 할 때'as '를'as'로 변경해 볼 수 있습니까? –

+0

시도해 보았습니다. –

답변

0

작업 용액은 :

numberOfRowsInSection = ((_frcU!.sections as NSArray).firstObject as NSFetchedResultsSectionInfo).numberOfObjects 

개의 기본적인 차이

1)가! 당신이 그것을 할 수있는 방법을

0

여기에있는 NSArray에 표시가

2) "캐스팅"

let sectionInfo = _frcU.sections[section] as NSFetchedResultsSectionInfo 
    let numberOfRowsInSection = sectionInfo.numberOfObjects 

당신은 엑스 코드에서 기본 마스터 - 세부 응용 프로그램 템플릿에서 좀 걸릴 수 있습니다. Swift에서 프로젝트를 만들 수 있으므로 Swift에서 일하는 방법을 배울 수있는 많은 것들이 있습니다.

+0

제 교육을 위해서 : 귀하의 실습 예제와 OP의 차이점은 무엇입니까? '_frcU' 대신에'_frcU'입니까, 아니면'firstObject' 대신에 배열 표기법을 사용합니까? –

+0

'_frcU?'는 다음 작업을 호출하기 전에'nil'을 검사하지만 _frcU는이 작업을 위해 선택 사항이어야합니다. '_fcrU'를 NSFetchedResultController로 정의 했습니까? 그렇다면 그것을 추가해야합니다. 'firstObject'는'NSArray' 클래스에있는 메소드로, 코드를 길고 읽을 수있게 만드는 캐스팅 후에 호출 할 수 있습니다. – Keenle

+0

맞아요, 나는 옵션과'firstObject' 메소드에 익숙 합니다만, János 버전이 특별히 실패한 원인이 무엇인지 궁금 해서요. 감사! –