添加URL列表到数组?

时间:2014-05-13 19:21:31

标签: ios objective-c

我正在使用MHVideoPhotoGallery创建存储在我网站上的图片库。添加图像的当前方式(如Github上的示例所示)是

    MHGalleryItem *photo1 = [MHGalleryItem.alloc initWithURL:@"*ENTER IMAGE URL HERE*"
                                            galleryType:MHGalleryTypeImage];
    MHGalleryItem *photo2 = [MHGalleryItem.alloc initWithURL:@"*ENTER IMAGE URL HERE*"
                                            galleryType:MHGalleryTypeImage];
    MHGalleryItem *photo3 = [MHGalleryItem.alloc initWithURL:@"*ENTER IMAGE URL HERE*"
                                            galleryType:MHGalleryTypeImage];

    self.galleryDataSource = @[@[photo1,photo2,photo3]];

但我想添加数百张图片,这不是最理想的方式。对我来说,实现这一目标的更简单方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:2)

您必须从网址列表开始。我要做的是把它放在我的包中的文本文件中。在代码中,当应用程序运行时,我会打开文本文件(作为NSString)并将其拆分为NSArray。现在我有了一个NSArray的URL。然后我会循环通过NSArray。所以现在我们进入一个循环。对于数组的每个项目,我将初始化MHGalleryItem,然后将其添加到先前创建的带有addObject:的NSMutableArray。因此,我们有一个重复的两行或三行循环,遍历所有URL。

以下是伪代码和未经测试(因此它可能包含错误),但它应该给出我建议的结构的一般概念:

NSMutableArray* temp = [NSMutableArray new];
NSString* s =
    [NSString stringWithContentsOfFile:
        [[NSBundle mainBundle] pathForResource:@"urls" ofType:@"txt"]
                                      encoding:NSUTF8StringEncoding error:nil];
NSArray* urls = [s componentsSeparatedByString:@"\n"];
for (NSString* url in urls) {
    MHGalleryItem *item = [[MHGalleryItem alloc] initWithURL:url
                                        galleryType:MHGalleryTypeImage];
    [temp addObject:item];
}
self.galleryDataSource = temp;

答案 1 :(得分:0)

循环。如果您在变量名的末尾添加数字,则需要循环和/或数组。

NSMutableArray * photos = [NSMutableArray new];
NSArray * photoPaths = [NSArray arrayWithContentsOfFile:plistContainingPhotoPaths];
for( NSString * path in photoPaths ){
    NSURL * photoURL = [NSURL URLWithString:path];
    MHGalleryItem * photo = [[MHGalleryItem alloc] initWithURL:photoURL
                                                   galleryType:MHGalleryTypeImage];
    [photos addObject:photo];
}

并且不要使用alloc的点语法,否则您的代码就会迸发火焰。

答案 2 :(得分:0)

在您的网站上使用命名协议,例如:

www.mywebsite.com/appImageGallery/insertImageNumber

并将insertImageNumber替换为您的图像编号。然后添加此for循环以获取所有图像并将它们添加到数组中。

NSMutableArray *mutableGalleryDataSource = [self.galleryDataSource mutableCopy]
for(int i = 0; i < numberOfImagesOnWebsite; i++){    //replace numberOfImagesOnWebsite with the number of images on your website.

    MHGalleryItem *newItem = [MHGalleryItem.alloc initWithURL:[@"www.mywebsite.com/appImageGallery/" stringByAppendingString:[NSString stringWithFormat: @"%i", i]] galleryType:MHGalleryTypeImage];

    [mutableGalleryDataSource addObject:newItem];
}
self.galleryDataSource = mutableGalleryDataSource;

答案 3 :(得分:0)

-addObjectsFromArray上还有一个NSMutableArray方法。