Ios 具有NSData数组的排序NSArray
我有一个nsarray,其中有图像数据,图像在数组中动态设置,但我想过滤数据,如果有任何nil nsdata,我不希望它在我的nsarray中,我如何对该数组进行排序。这是我的密码Ios 具有NSData数组的排序NSArray,ios,objective-c,arrays,nsarray,Ios,Objective C,Arrays,Nsarray,我有一个nsarray,其中有图像数据,图像在数组中动态设置,但我想过滤数据,如果有任何nil nsdata,我不希望它在我的nsarray中,我如何对该数组进行排序。这是我的密码 NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"profileImg"]; NSData* imageData1 = [[NSUserDefaults standardUserDefaults] objectF
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];
}
}
NSMutableArray*finalArray=[[NSMutableArray alloc]init];
对于(int i=0;i
您可以直接检查该索引处的对象是否为零
NSMutableArray * finalArray = [[NSMutableArray alloc] init];
for (int i = 0; i< pageImages.count; i++) {
if (pageImages[i]){
UIImage * temp = [pageImages objectAtIndex:i];
[finalArray addObject:temp];
}
}
NSMutableArray*finalArray=[[NSMutableArray alloc]init];
对于(int i=0;i
我会采取完全不同的方法。问题是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];
我会采取完全不同的方法。问题是
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];
感谢您的回复,我真的想在同一个self.pageImages中存储已排序的数据我真的想从我的NSArrayies中排除所有包含nill数据或没有图像的图像,这就是我要说的。获取finalArray并将其存储在pageImagesAdd after for循环中-pageImages=finalArray;我这么做了,但还是没有运气:(感谢您的回复,我实际上想在同一个self.pageImages中存储已排序的数据。我实际上想从我的Nsarrayes中排除所有包含nill数据或其中没有图像的图像,这就是我要说的。使用finalArray并将其存储在pageImagesAdd中for loop-pageImages=finalArray;我这样做了,但仍然没有运气:(在
NSArray
中不能有nil
对象。例如,如果imageData1
是nil
,数组将只包含imageData
,而不包含其他图像。因此,如果我放置一些其他虚拟pic而不是nil,那么它会工作吗?我的意思是,如果is image上的语句是虚拟的,那么不添加is i,我该如何应用n nsaray!在NSArray
中不可能有nil
对象。例如,如果imageData1
是nil
,数组将只包含imageData
,而不包含其他图像。因此,如果我放置一些其他虚拟pic而不是nil,那么它会工作吗?我的意思是,如果is image上的语句是虚拟的,那么我该如何应用add在nsaray中!三分之一的此应用程序崩溃并输出“***由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:'-[\uu NSCFData\u isDecompressing]:未识别的选择器发送到实例0x1567164a0'”三分之一的此应用程序崩溃并输出“***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:”-[\uu NSCFData\u isDecompressing]:未识别的选择器发送到实例0x1567164a0”