2 votes

Boucle à travers NSStrings dans NSArray

En gros, ce que je veux faire, c'est ceci : 1. Récupérer le fichier .plist depuis l'URL 2. Mettre le tableau du fichier plist dans un NSMutableArray 3. Boucle à travers chaque chaîne dans le NSMutableArray et les trier dans plusieurs NSMutableArrays.

J'ai déjà fait les étapes 1 et 2 et j'ai un NSMutableArray prêt à l'emploi. Voici donc à quoi ressemblent les chaînes de caractères de la NSArray :

Looper|September 28th, 2012|http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4?TestLink|http://ia.media-imdb.com/images/M/MV5BMTM5NTkwMzI2MF5BMl5BanBnXkFtZTcwMTc5MjQ2Nw@@._V1._SY317_.jpg

Il s'agit d'une application de bandes-annonces de films. Je veux donc pouvoir trier cette chaîne (et toutes les autres chaînes formatées de manière similaire dans NSMutabeArray) en 4 NSMutableArrays différents, et les séparer au niveau du "|" en utilisant componentsSeperatedByString. C'est ce que j'ai fait jusqu'à présent, mais lorsque j'enregistre "titleArray", je n'obtiens que le premier titre du tableau :

NSInteger count = [newTrailers count];
for (int i = 0; i < count; i++) {
    NSString* body = [newTrailers objectAtIndex:i];

    NSArray *splits = [NSArray arrayWithObjects:body, nil];

    NSMutableArray* titleArray = [[NSMutableArray alloc] init];
    NSMutableArray* descriptionArray = [[NSMutableArray alloc] init];
    NSMutableArray* linkArray = [[NSMutableArray alloc] init];
    NSMutableArray* posterArray = [[NSMutableArray alloc] init];

    for (NSString* item in splits)
    {
        NSArray* parts = [item componentsSeparatedByString: @"|"];
        if ([parts count] == 4)
        {
            [titleArray addObject: [parts objectAtIndex: 0]];
            [descriptionArray addObject: [parts objectAtIndex: 1]];
            [linkArray addObject: [parts objectAtIndex: 2]];
            [posterArray addObject: [parts objectAtIndex: 3]];
        }
    }

    NSLog(@"Title Arrray: %@", titleArray);
}

Merci pour toute aide et je suis novice en matière de boucles et d'ints, alors soyez indulgents avec moi !

1voto

Steffen Blass Points 276

Il y a beaucoup de création de tableaux dans votre code - en particulier, pour chaque entrée dans le tableau newTrailers, vous créez des tableaux pour le titre, la description, etc...

Si j'ai bien compris, ce que vous voulez faire devrait être fait comme ceci (non testé, simplement votre code un peu réarrangé) :

NSInteger count = [newTrailers count];
NSMutableArray* titleArray = [[NSMutableArray alloc] init];
NSMutableArray* descriptionArray = [[NSMutableArray alloc] init];
NSMutableArray* linkArray = [[NSMutableArray alloc] init];
NSMutableArray* posterArray = [[NSMutableArray alloc] init];

for (int i = 0; i < count; i++) {
    NSString* body = [newTrailers objectAtIndex:i];

    NSArray* parts = [body componentsSeparatedByString: @"|"];
    if ([parts count] == 4)
    {
        [titleArray addObject: [parts objectAtIndex: 0]];
        [descriptionArray addObject: [parts objectAtIndex: 1]];
        [linkArray addObject: [parts objectAtIndex: 2]];
        [posterArray addObject: [parts objectAtIndex: 3]];
    }
}
NSLog(@"Title Arrray: %@", titleArray);

1voto

Voici un exemple de code pour itérer un tableau de chaînes de caractères.

NSArray *arr = [NSArray arrayWithObjects:@"AString",@"AnotherString", nil];
for(NSString *str in arr){

    NSLog(@"%@",str);
}

dans un mouvement rapide

let arr : NSMutableArray = ["A","B"]

for str in arr as! [String]
{

    print(str)
}

0voto

KDaker Points 3571

Se débarrasser de la splits et sa boucle forin, et divise simplement le tableau de body directement :

NSString* body = [newTrailers objectAtIndex:i];
NSMutableArray* titleArray = [[NSMutableArray alloc] init];
NSMutableArray* descriptionArray = [[NSMutableArray alloc] init];
NSMutableArray* linkArray = [[NSMutableArray alloc] init];
NSMutableArray* posterArray = [[NSMutableArray alloc] init];

NSArray* parts = [body componentsSeparatedByString: @"|"];
if ([parts count] == 4) {

    [titleArray addObject: [parts objectAtIndex: 0]];
    [descriptionArray addObject: [parts objectAtIndex: 1]];
    [linkArray addObject: [parts objectAtIndex: 2]];
    [posterArray addObject: [parts objectAtIndex: 3]];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X