2015-05-10 3 views
0

У меня нет проблем с заполнением UICollectionView локальными файлами. Проблема возникает, когда я пытаюсь использовать изображения, сделанные из Интернета.Как я могу заполнить UICollectonView изображениями из Интернета?

Я попытался загрузки изображений с помощью этого кода:

var images: [String] = [] 
override func viewDidLoad() { 

     for var i=1; i<160; i++ { 

      var image = NSURL(fileURLWithPath: "http://www.image.com/imagenumber\(i)") 

      images.append(image) 

     } 
    } 
} 

я получаю ошибку в дописывания линии, говоря: "Cannot invoke 'append' with an argument list type of '(NSURL?)'.

Вот код UICollectionView здесь:

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return images.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell: CollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! CollectionViewCell 
    cell.imageCell.image = UIImage(named: images[indexPath.row] as String) 
    return cell 

} 

ответ

0

Использование SDWebImage, это идти к библиотеке для этого случая.

+0

Любые учебники для этого с использованием Swift? Кажется, я ничего не могу найти! –

0

Эта линия будет только дать вам URL изображения, а не само изображение:

NSURL(fileURLWithPath: "http://www.image.com/imagenumber\(i)") 

Это будет типа NSURL, так ясно, вы не сможете сохранить его в массиве изображений.

Вы можете сделать это:

if 
    let imageUrl = NSURL(fileURLWithPath: "www.picture.com/url"), 
    let data = NSData(contentsOfURL: imageUrl), 
    let image = UIImage(data: data) { 
    // append the image here 
} 

Во-первых, вы получите NSURL, то NSData с адреса, который может быть использован для инициализации UIImage. Причиной для множественного связывания здесь является то, что методы NSURL, NSData и UIImage являются полностью отказоустойчивыми.