Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何按大小对相集数组排序_Ios_Objective C - Fatal编程技术网

Ios 如何按大小对相集数组排序

Ios 如何按大小对相集数组排序,ios,objective-c,Ios,Objective C,我在数组(arrayOfAsset)中有数千个PHAssets,我知道如何按创建日期对数组进行排序 [[arrayOfAsset objectAtIndex:j1]排序描述符:@[[NSSortDescriptor SortDescriptor With Key:@“creationDate”升序:是]] 但是我不知道如何根据资产的大小对数组进行排序。您好,您可以使用pixelWidth和pixelHeight根据大小大致排序。假设仅用于照片。对于视频,您需要在排序中包含持续时间 NSSortD

我在数组(arrayOfAsset)中有数千个
PHAssets
,我知道如何按创建日期对数组进行排序

[[arrayOfAsset objectAtIndex:j1]排序描述符:@[[NSSortDescriptor SortDescriptor With Key:@“creationDate”升序:是]]


但是我不知道如何根据资产的大小对数组进行排序。

您好,您可以使用
pixelWidth
pixelHeight
根据大小大致排序。假设仅用于照片。对于视频,您需要在排序中包含
持续时间

NSSortDescriptor *sortByWidth = [NSSortDescriptor sortDescriptorWithKey:@"pixelWidth" ascending:YES];
NSSortDescriptor *sortByHeight = [NSSortDescriptor sortDescriptorWithKey:@"pixelHeight" ascending:YES];
[[arrayOfAsset objectAtIndex:j1] sortUsingDescriptors:@[sortByWidth,sortByHeight]];

PHAsset
类中没有大小属性,但您可以从“PHAsset”中获取实际的媒体NSData,并使用NSData计算的大小创建一组不同的数组,如
data.length
,然后当您获得所有大小时,使用大小键对它们进行排序。但这可能会导致巨大的内存消耗,因为你说你有很多图像。你可以根据图像大小进行排序。@iphone谢谢你的回答。我试过你说的方式。对于较少数量的图像,它可以正常工作,但如果我的图像超过2500张,它就会崩溃。还有其他方法吗???请您解释一下如何从资产中获取图像的大小。像素宽度和资源。像素高度???谢谢你的回答。我用示例代码尝试了lot,但它不起作用。在数组中,我有8个大小集(241KB、245KB、240KB、238KB、241KB、238KB、238KB、235KB)。但所有资源都具有相同的像素宽度和像素高度。我们如何按像素宽度、像素高度排序?是的。那样的话,我不知道。我认为如果大小相同但字节不同,就没有办法做到这一点。