2 years ago

#58045

test-img

user1114881

alphabetizing contents of array

I have an app in which I add UIImages to a file in the documents directory. Each time an image is added it is named by adding 10 to the previous images name and converted to a text.

//this is how I change the name of the file to save it 


NSString *string2 = self.imageNameTextField.text;

int n = [string2 intValue];
int value = n + 10;
NSString *string = [NSString stringWithFormat:@"%d",value];
[self.imageNameTextField setText:string];

Then I gather these files from documents directory in another part of an app in an array and display them in a coverflow.

//here I get the place in the documents directory where I saved the images along with other associated files
NSString *extension = @"jpg";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *slash2 = [documentsDirectory stringByAppendingPathComponent:@"/"];
NSString *documentsDirectory13 = [slash2 stringByAppendingPathComponent:self.user.text];
NSString *documentsDirectory14 = [documentsDirectory13 stringByAppendingPathComponent:@"/Family"];
NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory14 error:&error];
NSMutableArray *jpegFiles = [NSMutableArray arrayWithCapacity: [contents count]];

NSLog(@"jpegFiles;%@",jpegFiles );

NSIndexSet *cafFileNameIndexes = [contents indexesOfObjectsPassingTest:^BOOL(NSString *fileName, NSUInteger idx, BOOL *stop) {
    return [[fileName pathExtension] isEqualToString:extension];
}];
NSArray *cafFileNames = [contents objectsAtIndexes:cafFileNameIndexes];
NSLog(@"user;%@",self.user);

NSLog(@"cafFilesNames;%@",cafFileNames );
//here I can alphabetize the files by their file names.
NSArray *sortedArray = [cafFileNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

NSLog(@"sortedArray;%@",sortedArray );

NSLog(@"contents;%@",contents );


imageFile = [NSMutableArray arrayWithArray:cafFileNames];

//Here you get the only the .jpg files at this directory and load them as UIImages not file names.  So they have very different identifiers.
NSString *filename;
for (filename in contents)
{
    if ([[filename pathExtension] isEqualToString:extension])
    {
        
        [jpegFiles addObject: [UIImage imageWithContentsOfFile:[documentsDirectory14 stringByAppendingPathComponent:filename]]];
    }
}    NSLog(@"filename;%@",filename);

NSLog(@"jpegFile%@",jpegFiles);
NSLog(@"jpegFiles.count%lu",(unsigned long)jpegFiles.count );

NSLog(@"jpegFile%@",jpegFiles);

//HERE I SET A PARAMETER OF NUMBER OF IMAGES

if (cafFileNames.count<= 50) {
    
    
//THEN I START GOING THOUGH EVER NUMBER I WISH I COULD FIND A WAY
//NOT TO DO THIS BUT DO IT UNIVERSALLY
    
    if (cafFileNames.count == 0) {
        
    }
    else if (cafFileNames.count == 1) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        }
    else if (cafFileNames.count == 2) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        NSString *nameTwo =[sortedArray objectAtIndex:1];
        }
    else if (cafFileNames.count == 3) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        NSString *nameTwo =[sortedArray objectAtIndex:1];
        NSString *nameThree =[sortedArray objectAtIndex:2];
        }
    else if (cafFileNames.count == 4) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        NSString *nameTwo =[sortedArray objectAtIndex:1];
        NSString *nameThree =[sortedArray objectAtIndex:2];
        NSString *nameFour =[sortedArray objectAtIndex:3];
        }
    else if (cafFileNames.count == 5) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        NSString *nameTwo =[sortedArray objectAtIndex:1];
        NSString *nameThree =[sortedArray objectAtIndex:2];
        NSString *nameFour =[sortedArray objectAtIndex:3];
        NSString *nameFive =[sortedArray objectAtIndex:4];
        
    }

//SINCE I HAD SIX IMAGES ALREADY I USED THIS FOR PRACTICE

    else if (cafFileNames.count == 6) {
//FIRST I SET STRINGS FOR EVERY FILE NAME IN THE ARRAY THAT HASN'T BEEN ALPHABETIZED

        NSString *nameOnea = [cafFileNames objectAtIndex:0];
        NSString *nameTwoa =[cafFileNames objectAtIndex:1];
        NSString *nameThreea =[cafFileNames objectAtIndex:2];
        NSString *nameFoura =[cafFileNames objectAtIndex:3];
        NSString *nameFivea =[cafFileNames objectAtIndex:4];
        NSString *nameSixa =[cafFileNames objectAtIndex:5];
//THEN I SET A STRING FOR EVERY UNIQUE IDENTIFIER THAT IS IN THE SAME ORDER AS THE UNALPHABETIZED ARRAY.
        NSString *nameOneb = [jpegFiles objectAtIndex:0];
        NSString *nameTwob =[jpegFiles objectAtIndex:1];
        NSString *nameThreeb =[jpegFiles objectAtIndex:2];
        NSString *nameFourb =[jpegFiles objectAtIndex:3];
        NSString *nameFiveb =[jpegFiles objectAtIndex:4];
        NSString *nameSixb =[jpegFiles objectAtIndex:5];

 //THEN I SET A STRING FOR THE ALPHABETIZED ARRAY.
        NSString *nameOnec = [sortedArray objectAtIndex:0];
        NSString *nameTwoc =[sortedArray objectAtIndex:1];
        NSString *nameThreec =[sortedArray objectAtIndex:2];
        NSString *nameFourc =[sortedArray objectAtIndex:3];
        NSString *nameFivec =[sortedArray objectAtIndex:4];
        NSString *nameSixc =[sortedArray objectAtIndex:5];
        NSLog(@"nameOnea%@",nameOnea);
        NSLog(@"nameTwoa%@",nameTwoa);
        NSLog(@"nameThreea%@",nameThreea);
        NSLog(@"nameFoura%@",nameFoura);
        NSLog(@"nameFivea%@",nameFivea);
        NSLog(@"nameSixa%@",nameSixa);
        NSLog(@"nameOneb%@",nameOneb);
        NSLog(@"nameTwob%@",nameTwob);
        NSLog(@"nameThreeb%@",nameThreeb);
        NSLog(@"nameFourb%@",nameFourb);
        NSLog(@"nameFiveb%@",nameFiveb);
        NSLog(@"nameSixb%@",nameSixb);
        NSLog(@"nameOnec%@",nameOnec);
        NSLog(@"nameTwoc%@",nameTwoc);
        NSLog(@"nameThreec%@",nameThreec);
        NSLog(@"nameFourc%@",nameFourc);
        NSLog(@"nameFivec%@",nameFivec);
        NSLog(@"nameSixc%@",nameSixc);

//THEN I COMPARE THE UNALPHABETIZED ARRAY NAMES WITH THE     ALPHABETIZED ARRAY NAMES AND WHERE THEY MATCH I SET THE    CORRESPONDING UNIQUE IDENTIFIER TO A STRING FOR FIRST PLACE,   SECOND PLACE, ETC.
        
        if ([nameOnec isEqualToString:nameOnea]) {one = nameOneb;NSLog(@"one%@",one);}
        else if ([nameOnec isEqualToString:nameTwoa]) {one = nameTwob;NSLog(@"one%@",one);}
        else if ([nameOnec isEqualToString:nameThreea]) {one = nameThreeb;NSLog(@"one%@",one);}
        else if ([nameOnec isEqualToString:nameFoura]) {one = nameFourb;NSLog(@"one%@",one);}
        else if ([nameOnec isEqualToString:nameFivea]) {one = nameFiveb;NSLog(@"one%@",one);}
        else if ([nameOnec isEqualToString:nameSixa]) {one = nameSixb;NSLog(@"one%@",one);}
        
        if ([nameTwoc isEqualToString:nameOnea]) {two = nameOneb;NSLog(@"two%@",two);}
        else if ([nameTwoc isEqualToString:nameTwoa]) {two = nameTwob;NSLog(@"two%@",two);}
        else if ([nameTwoc isEqualToString:nameThreea]) {two = nameThreeb;NSLog(@"two%@",two);}
        else if ([nameTwoc isEqualToString:nameFoura]) {two = nameFourb;NSLog(@"two%@",two);}
        else if ([nameTwoc isEqualToString:nameFivea]) {two = nameFiveb;NSLog(@"two%@",two);}
        else if ([nameTwoc isEqualToString:nameSixa]) {two = nameSixb;NSLog(@"two%@",two);}
        if ([nameThreec isEqualToString:nameOnea]) {three = nameOneb;NSLog(@"three%@",three);}
        else if ([nameThreec isEqualToString:nameTwoa]) {three = nameTwob;NSLog(@"three%@",three);}
        else if ([nameThreec isEqualToString:nameThreea]) {three = nameThreeb;NSLog(@"three%@",three);}
        else if ([nameThreec isEqualToString:nameFoura]) {three = nameFourb;NSLog(@"three%@",three);}
        else if ([nameThreec isEqualToString:nameFivea]) {three = nameFiveb;NSLog(@"three%@",three);}
        else if ([nameThreec isEqualToString:nameSixa]) {three = nameSixb;NSLog(@"three%@",three);}
        if ([nameFourc isEqualToString:nameOnea]) {four = nameOneb;NSLog(@"four%@",four);}
        else if ([nameFourc isEqualToString:nameTwoa]) {four = nameTwob;NSLog(@"four%@",four);}
        else if ([nameFourc isEqualToString:nameThreea]) {four = nameThreeb;NSLog(@"four%@",four);}
        else if ([nameFourc isEqualToString:nameFoura]) {four = nameFourb;NSLog(@"four%@",four);}
        else if ([nameFourc isEqualToString:nameFivea]) {four = nameFiveb;NSLog(@"four%@",four);}
        else if ([nameFourc isEqualToString:nameSixa]) {four = nameSixb;NSLog(@"four%@",four);}
        if ([nameFivec isEqualToString:nameOnea]) {five = nameOneb;NSLog(@"five%@",five);}
        else if ([nameFivec isEqualToString:nameTwoa]) {five = nameTwob;NSLog(@"five%@",five);}
        else if ([nameFivec isEqualToString:nameThreea]) {five = nameThreeb;NSLog(@"five%@",five);}
        else if ([nameFivec isEqualToString:nameFoura]) {five = nameFourb;NSLog(@"five%@",five);}
        else if ([nameFivec isEqualToString:nameFivea]) {five = nameFiveb;NSLog(@"five%@",five);}
        else if ([nameFivec isEqualToString:nameSixa]) {five = nameSixb;NSLog(@"five%@",five);}
        if ([nameSixc isEqualToString:nameOnea]) {six = nameOneb;NSLog(@"six%@",six);}
        else if ([nameSixc isEqualToString:nameTwoa]) {six = nameTwob;NSLog(@"six%@",six);}
        else if ([nameSixc isEqualToString:nameThreea]) {six  = nameThreeb;NSLog(@"six%@",six);}
        else if ([nameSixc isEqualToString:nameFoura]) {six  = nameFourb;NSLog(@"six%@",six);}
        else if ([nameSixc isEqualToString:nameFivea]) {six  = nameFiveb;NSLog(@"six%@",six);}
        else if ([nameSixc isEqualToString:nameSixa]) {six  = nameSixb;NSLog(@"six%@",six);}
        }
    else if (cafFileNames.count == 7) {
        NSString *nameOne = [sortedArray objectAtIndex:0];
        NSString *nameTwo =[sortedArray objectAtIndex:1];
        NSString *nameThree =[sortedArray objectAtIndex:2];
        NSString *nameFour =[sortedArray objectAtIndex:3];
        NSString *nameFive =[sortedArray objectAtIndex:4];
        NSString *nameSix =[sortedArray objectAtIndex:5];
        NSString *nameSeven =[sortedArray objectAtIndex:6];
        
    }}
//FINALLY I PUT THE ASSOCIATED FILES IN THE COVERFLOW ARRAY.

covers = [NSMutableArray     arrayWithObjects:one,two,three,four,five,six,nil];
/*covers= [NSMutableArray arrayWithArray:jpegFiles];{
    for (filename in jpegFiles);
}*/
NSLog(@"covers%@", covers);
NSLog(@"covers%@", covers);



// Add the coverflow view

coverflow.coverflowDelegate = self;
coverflow.dataSource = self;
[self.view addSubview:coverflow];
[coverflow setNumberOfCovers:(int)jpegFiles.count ];

LIKE I SAID THIS WORKS BUT IT WILL BE A PAIN TO WRITE THIS FOR COUNTS FROM 0-100 OR MORE. SO IF ANYONE CAN HELP ME DO THIS PROCESS MORE EFFICIENTLY I'D BE VERY GREATFUL.

ios

arrays

xcode

uiimage

coverflow

0 Answers

Your Answer

Accepted video resources