我想弄清楚我的表视图应该有多少个单元格。这取决于存储在Array中的查询结果。
加载视图时,数组可能不存在或具有任何值,因此单元格应为0.
如何检查我的数组以检查特定对象。我知道我可以使用containsObject或equalTo ...
我的数组将由以下对象组成:
{<GameTurn:TLED0qH44P:(null)> {\n GameRef = \"<Game:KgguI4ig4O>\";\n GameTurnImage = \"<PFFile: 0xb3da9d0>\";\n GameTurnWord = tester;\n OriginalImageCenterX = \"27.9\";\n OriginalImageCenterY = \"29.39375\";\n TurnCount = 1;\n UploadedBy = \"<PFUser:UgkZDtDsVC>\";\n}
上面会有多个条目。对于每个条目,我需要检查UploadedBy键是否等于PFUser currentUser。如果是添加一个单元格,依此类推。
所以我需要得到数组中该键与当前用户相等的项目的总体计数。
答案 0 :(得分:2)
您可以过滤数组以获取所有匹配对象的新数组:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"UploadedBy = %@", currentUser];
NSArray *filtered = [array filteredArrayUsingPredicate:predicate];
并将过滤后的数组用作表视图数据源。
如果阵列来自Core Data fetch请求,那么它会更有效 将谓词添加到获取请求中。
答案 1 :(得分:2)
有很多方法可以在Objective-C中过滤数组。以下是使用块和NSIndexSet
的一种方法。
您可以获取对象通过测试的原始数组的所有索引(在块中指定)。然后创建另一个由这些索引处的对象组成的数组。
// get all indexes of objects passing your test
NSIndexSet *indexes = [myArray indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
// replace this with your equality logic
return [obj uploadedBy] == [PFUser currentUser];
}];
// Filled with just objects passing your test
NSArray *passingObjects = [myArray objectsAtIndexes: indexes];