使用sqlite的核心数据仅返回3行

时间:2015-01-06 06:28:38

标签: ios sqlite core-data

我的数据库有两个表 ZDESTINATION ZPOSTIT 。有多对一的关系,一个PostIt可以有很多Destination个。我想获得所有Destination行(其中有9行),我正在使用NSFetchRequest。但只返回3行。我没有指定谓词。我有一个排序顺序和一个键名路径为@"postIt.creationTime"。我检查了数据库,所有postIts都有创建时间,所有目的地都有一个有效的postit关系。

这是非常简化的查询。

SELECT t0.Z_ENT, t0.Z_PK, t0.ZPOSTIT
FROM ZDESTINATION t0
LEFT OUTER JOIN ZPOSTIT t1 ON t0.ZPOSTIT = t1.Z_PK
WHERE t0.Z_PK IN (?,?,?)
ORDER BY t1.ZCREATIONTIME DESC
LIMIT 20

DESTINATION(主键,PostIt)

"1" "3"
"2" "2"
"3" "4"
"4" "5"
"5" "5"
"6" "5"
"7" "7"
"8" "7"
"9" "7"

POSTIT主键,创建时间

"1" "442134908.015139"
"2" "442134921.469915"
"3" "442134941.083225"
"4" "442135028.839804"
"5" "442212344.121323"
"6" "442212468.053344"
"7" "442214203.670005"

注意LEFT OUTERJOIN由获取请求自动生成。

您是否有任何关于如何调试这些内容的想法或提示?

这是核心数据NSFetchRequest

NSFetchRequest *fetchRequest = [ [ NSFetchRequest alloc ] init ];
NSEntityDescription *entity = [ NSEntityDescription entityForName:@"Destination"
                                           inManagedObjectContext:studyStageAssets.postItMoContext ];
[ fetchRequest setEntity:entity ];

// Create the sort descriptors array.
NSSortDescriptor *creationTimeDescriptor = [ [ NSSortDescriptor alloc ]
                                            initWithKey:@"postIt.creationTime"
                                            ascending:NO ];

NSArray *sortDescriptors = @[ creationTimeDescriptor ];
[ fetchRequest setSortDescriptors:sortDescriptors ];

// Create and initialize the fetch results controller.
_fetchedResultsController = [ [ NSFetchedResultsController alloc ]
                             initWithFetchRequest:fetchRequest
                             managedObjectContext:studyStageAssets.postItMoContext
                             sectionNameKeyPath:@"postIt.creationTime"
                             cacheName:@"TrailIt" ];

_fetchedResultsController.delegate = self;

紧随其后的是performFetch

1 个答案:

答案 0 :(得分:1)

根据我的评论,问题可能是由于获取的结果控制器缓存。你可以用

清除它
[NSFetchedResultsController deleteCacheWithName:@"TrailIt"];