2016-09-23 8 views
1

У меня есть массив изображений для отправки.Как узнать размер массива NSData?

var images = [NSData]() 

Мне нужно, прежде чем я отправлю эти изображения, чтобы проверить их общий размер; из-за ограничения сервера.

Я пробовал следующий код, но это не дает мне фактический размер.

if (images.description.lengthOfBytesUsingEncoding(NSUTF32StringEncoding) >= 3900000) 
{ 
    print("Max of images size reached") 
} else { 
    // Continue 
} 
+0

Вы хотите, чтобы найти число элементов NSData в массиве, или размер отдельные объекты NSData? – Woodstock

+0

@Woodstock Я знаю, кто найти количество элементов, мне просто нужен общий размер всех изображений в байте. –

ответ

3

Поскольку вы ищете общий размер всех NSData элементов массива, необходимо вычислить суммарную длину. Один из способов сделать это с reduce:

let totalLength = arr.reduce(0) {$0 + $1.length} 

Это короткий способ записи цикла:

var totalLength = 0 
for let image in images { 
    totalLength += image.length 
} 
+0

Это действительно сработало для меня, спасибо. –

2

Попробуйте это:

let totalLength = images.reduce(0) { $0 + $1.length }