Sco*_*Zhu 2 objective-c nsarray ios
这是我的数据模型:
@interface DataModel : NSObject
@property (strong, nonatomic) NSString *label;
@property (nonatomic) float value;
@property (nonatomic) NSInteger index;
@property (nonatomic, strong) NSString *unit;
@end
Run Code Online (Sandbox Code Playgroud)
我有一个NSArray与这个数据模型
NSArray *myDataModels;
Run Code Online (Sandbox Code Playgroud)
现在我需要从这个数组中获取最高的数据模型 @property (nonatomic) float value;
我可以通过使用获得最高价值
[[myDataModels valueForKeyPath:@"@max.value"] intValue]
Run Code Online (Sandbox Code Playgroud)
但我需要的是DataModel具有最高价值的整体,而不仅仅是价值.
有人可以帮帮我吗?
您需要迭代数组并找到最大值.
DataModel *maxModel = nil;
float maxValue = FLT_MIN;
for (DataModel *model in myDataModels) {
if (model.value > maxValue) {
maxModel = model;
maxValue = model.value;
}
}
NSLog(@"The max model is %@", maxModel);
Run Code Online (Sandbox Code Playgroud)
使用Predicate的最小版本可以
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.value ==%@.@max.value", myDataModels];
NSArray *filteredArray = [myDataModels filteredArrayUsingPredicate:predicate];
if(filteredArray.count>0)
DataModel *smallestValue = [filteredArray objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
或者你也可以这样做(正如@Puneet在评论中所建议的那样),
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.value == %@",[myDataModels valueForKeyPath:@"@max.value"]];
NSArray *filteredArray = [myDataModels filteredArrayUsingPredicate:predicate];
if(filteredArray.count>0)
DataModel *smallestValue = [filteredArray objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |