我在使用NSFetchResultsController時遇到了一些麻煩,並尋求一些幫助。帶有sectionsNameKeyPath和結果順序的NSFetchResultsController
我CoreData實體FunCentre
具有以下屬性name
,latitude
,longitude
,country
,postcode
和favourite
。當用戶在tableview中選擇一行時,它將favourite
屬性設置爲1,再次點擊時將它設置爲0.這一切都正常工作,因爲我檢查了sqlite文件並且更改正確地發生。
我想使用部分來分隔行和非那些行。我希望收藏夾列在第一部分的tableview頂部,列表的其餘部分列在第二部分。
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"favourite"
cacheName:nil];
上面的代碼工作,而在應用程序和不斷變化的奪冠熱門,但是當我關閉應用程序,然後重新啓動它的收藏夾不進行分組和按字母順序正好出現在主力名單,但它還是把正確的最喜歡的部分中的行數。
SQL調試結果
CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA
CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZCOUNTRY, t0.ZFAVOURITE, t0.ZLATITUDE, t0.ZLONGITUDE, t0.ZNAME, t0.ZPOSTCODE FROM ZFUNCENTRE t0 ORDER BY t0.ZNAME
CoreData: annotation: sql connection fetch time: 0.0051s
CoreData: annotation: total fetch execution time: 0.0106s for 34 rows.
CoreData: sql: SELECT t0.ZFAVOURITE, COUNT (DISTINCT t0.Z_PK) FROM ZFUNCENTRE t0 GROUP BY t0.ZFAVOURITE ORDER BY t0.ZFAVOURITE
誰能告訴我,爲什麼分組不上重新啓動工作?還有如何更改分組順序?因爲收藏夾出現在底部,我希望它們位於頂部。
提前非常感謝
感謝馬丁,這個問題解決了隨訂單一起發佈。如何更改欄目順序?我想在頂部和下面的列表中的其他部分,它目前相反。 –
@MattPrice:將'升序:YES'更改爲'升序:NO' :-) –
完美..很多感謝您的快速回復和很好的答案。 –