2014-09-13 3 views
0

с последним релизом Xcode (GM) Я имею много ошибок строит свой проект, который с предыдущей версией не было замечено как следующего кодXcode 6 GM - NSFetchedResultsSectionInfo

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    let sectionInfo = self.fetchedResultsController.sections[section] as NSFetchedResultsSectionInfo 
    println("numberOfRowsInSection: \(self.entityName()) : \(sectionInfo.numberOfObjects)") 
    return sectionInfo.numberOfObjects 
} 

Я переписать следующий :

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    //#warning Incomplete method implementation -- Return the number of items in the section 
    if let sectionInfo = fetchedResultsController.sections { 
     println("numberOfRowsInSection: \(self.entityName()) : \(sectionInfo[section].numberOfObjects)") 
     return sectionInfo[section].numberOfObjects 

    } 
return 0 
} 

есть ли лучший и правильный способ написать это?

+0

NSFetchedResultsSectionInfo - это протокол, а не класс. – quellish

ответ

0

Честно говоря я не программирую в быстры, но я думаю, что это Obj-C фрагмент кода поможет вам реорганизовать код:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
    NSInteger rows = 0; 

    if ([[self.fetchedResultsController sections] count] > 0) { 
     id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section]; 
     rows = [sectionInfo numberOfObjects]; 
    } 
    return rows; 
} 
+0

это похоже на то, что я использую только с объективом-c, и он работал как обычно. проблема с быстрым – tylyo

1

С Xcode 6 бета-6 или 7, sections собственности NSFetchedResultsController «s является необязательным. Таким образом, Apple теперь использует следующий код в Xcode 6 GM Master-Detail шаблон приложений с Core Data активированном (обратите внимание, что этот код для UITableViews, но он также должен быть применен для UICollectionViews в -collectionView:numberOfItemsInSection:):

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    let sectionInfo = fetchedResultsController.sections![section] as NSFetchedResultsSectionInfo 
    return sectionInfo.numberOfObjects 
} 

Если вы поставьте точку останова в этом методе и впервые запустите свой шаблон приложения Master-Detail Xcode 6 GM, вы увидите, что этот метод вызывается и что sectionInfo имеет значение, даже если нет элементов для возврата после запроса начальной выборки ,

Хотя я бы предпочел необязательное связывание для большей ясности здесь, я предполагаю, что если вы строго следуете шаблону Apple Core Data, может не нанести вреда повторное использование этого кода (без дополнительной привязки). Во всяком случае, ваш необязательный код привязки кажется правильным.

Смежные вопросы