对具有 NSData 数组的 NSArray 进行排序
Sort NSArray having NSData array
我有这个 nsarray,其中包含图像数据,图像在数组中动态设置,但我想过滤数据,如果有任何 nil nsdata 我不希望它在我的 nsarray 中,我该如何对这个数组进行排序。这是我的代码。
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg"];
NSData* imageData1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg1"];
NSData* imageData2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg2"];
NSData* imageData3 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg3"];
NSData* imageData4 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg4"];
NSData* imageData5 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg5"];
self.pageImages = [NSArray arrayWithObjects:
[UIImage imageWithData:imageData],
[UIImage imageWithData:imageData1],
[UIImage imageWithData:imageData2],
[UIImage imageWithData:imageData3],
[UIImage imageWithData:imageData4],
[UIImage imageWithData:imageData5],nil];
可以直接查看那个索引处的对象是否为nil
NSMutableArray * finalArray = [[NSMutableArray alloc] init];
for (int i = 0; i< pageImages.count; i++) {
if (pageImages[i]){
UIImage * temp = [pageImages objectAtIndex:i];
[finalArray addObject:temp];
}
}
我会采取完全不同的方法。问题是 arrayWithObjects:
在遇到 nil
时停止。例如,如果 imageData1
是 nil
,您的数组将只有一个图像 - imageData
.
更好的方法是检查每个 nil
。仅添加非零图像。
NSArray *keys = @[ @"profileImg", @"profileImg1", @"profileImg2", @"profileImg3", @"profileImg4", @"profileImg5" ];
NSMutableArray *images = [NSMutableArray array];
for (NSString *key in keys) {
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
if (imageData) {
UIImage *image = [UIImage imageWithData:imageData];
if (image) {
[images addObject:image];
}
}
}
self.pageImages = [images copy];
我有这个 nsarray,其中包含图像数据,图像在数组中动态设置,但我想过滤数据,如果有任何 nil nsdata 我不希望它在我的 nsarray 中,我该如何对这个数组进行排序。这是我的代码。
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg"];
NSData* imageData1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg1"];
NSData* imageData2 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg2"];
NSData* imageData3 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg3"];
NSData* imageData4 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg4"];
NSData* imageData5 = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg5"];
self.pageImages = [NSArray arrayWithObjects:
[UIImage imageWithData:imageData],
[UIImage imageWithData:imageData1],
[UIImage imageWithData:imageData2],
[UIImage imageWithData:imageData3],
[UIImage imageWithData:imageData4],
[UIImage imageWithData:imageData5],nil];
可以直接查看那个索引处的对象是否为nil
NSMutableArray * finalArray = [[NSMutableArray alloc] init];
for (int i = 0; i< pageImages.count; i++) {
if (pageImages[i]){
UIImage * temp = [pageImages objectAtIndex:i];
[finalArray addObject:temp];
}
}
我会采取完全不同的方法。问题是 arrayWithObjects:
在遇到 nil
时停止。例如,如果 imageData1
是 nil
,您的数组将只有一个图像 - imageData
.
更好的方法是检查每个 nil
。仅添加非零图像。
NSArray *keys = @[ @"profileImg", @"profileImg1", @"profileImg2", @"profileImg3", @"profileImg4", @"profileImg5" ];
NSMutableArray *images = [NSMutableArray array];
for (NSString *key in keys) {
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
if (imageData) {
UIImage *image = [UIImage imageWithData:imageData];
if (image) {
[images addObject:image];
}
}
}
self.pageImages = [images copy];