Xcode - добавление UIImages в массив из проблемы с RSS-фидом - PullRequest
0 голосов
/ 14 мая 2011

"- [NSMutableArray insertObject: atIndex:]: попытка вставить нулевой объект в 0 '"

Если я использую жестко закодированный путь («путь» в коде), он добавляет изображение правильно. когда я получаю тот же URL из RSS-канала, он не работает (ошибка выше).

Я попытался проверить URL с помощью простой проверки на равенство, и это указывает на то, что они не равны, хотя в выводе отладчика они выглядят так.

Любое понимание управления памятью также будет полезно. Я пришел из мира работы с Flash и нуб к xcode (извините). Я знаю, что мне нужно перестать думать об управлении памятью как о запоздалой мысли ...

-

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self prepareGalleryLoad]; //sets up coverflow, waiting for data

    NSString *xmlpath =     @"http://mydomain.com/gallery3/index.php/rss/feed/gallery/album/12";

xmlreader = [[XMLReader alloc] init];
[xmlreader parseXMLFileAtURL:xmlpath];


NSMutableArray *imagearray = [[NSMutableArray alloc]init]; //array of images
NSMutableArray *imagearraycaptions = [[NSMutableArray alloc]init]; //array of captions for images

NSString *path;  
NSString *pathfromrss;  

UIImage *tempimage;

for (int y = 0; y < [xmlreader.stories count]; y++){
    [imagearraycaptions addObject:[[xmlreader.stories objectAtIndex:y] objectForKey:@"title"]];
    path = @"http://mydomain.com/gallery3/var/resizes/College-of-Nursing-and-Health-Studies/health10.jpg?m=1299713266";    
    pathfromrss = [NSString stringWithFormat:@"%@",[[xmlreader.stories objectAtIndex:y] objectForKey:@"link"]];

    //DIAGNOSTIC check of path vs path temp.
    if (path == pathfromrss){
        NSLog(@"path is equal");
    }else{
        NSLog(@"path is not equal");
        NSLog(@"%@",path);
        NSLog(@"%@",pathfromrss);
    }

    //END DIAGNOSTIC path check

    tempimage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:path]]];

    //tempimage is NIL when using "pathfromrss", works fine with "path"
    if(tempimage){
        [imagearray addObject:tempimage];
    }
}

coverstext = imagearraycaptions; //coverflow uses this
covers = imagearray; //coverflow uses this

[self finishGalleryLoad];

}

1 Ответ

0 голосов
/ 16 мая 2011

Друг помог мне найти ответ.RSS-лента включала новые строки, которые я не уловил в выводе отладчика.Убрали их с:

for (int y = 0; y < [xmlreader.stories count]; y++){
    pathfromrss = [NSString stringWithFormat:@"%@",[[xmlreader.stories objectAtIndex:y] objectForKey:@"link"]];
    [coverflowdescription setText:pathfromrss];

    NSString *cleanurl = [pathfromrss stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSData *mydata = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:cleanurl]];

    UIImage *tempimage = [[UIImage alloc] initWithData:mydata];
    if(tempimage){
        [imagearraycaptions addObject:[[xmlreader.stories objectAtIndex:y] objectForKey:@"title"]];
        [imagearray addObject:tempimage];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...