2 years ago
#58045
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