2011-05-15 81 views
0

我正试图在我的应用上使用“添加到收藏夹”功能。我似乎无法让它正常工作。基本上每次我的手机重新启动时,所有的收藏夹都将从数组和字典中删除。无论如何要保存这些数据,以便每次启动应用程序时都能保存和恢复数据。非常感谢。添加到收藏夹功能iPhone

下面是一些代码:在appDidFinishLaunching:

//============== Add To Favourites ============== 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"]; 


NSArray *pathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectoryArray = [pathsArray objectAtIndex:0]; 
NSString *filePathArray = [documentsDirectoryArray stringByAppendingPathComponent:@"savedArray.data"]; 

delegateFavouritesDictionary = [NSMutableDictionary dictionary]; 
[delegateFavouritesDictionary writeToFile:filePath atomically:YES]; 

    delegateFavouritesArray = [[NSMutableArray alloc]init]; 

在detailViewController viewDidLoad中:

self.addToFavouritesArray = [[NSMutableArray alloc] init]; 
self.addToFavouritesDictionary = [NSMutableDictionary dictionary]; 
TabBar_NavigationBasedAppDelegate *mainDelegate = (TabBar_NavigationBasedAppDelegate *)[[UIApplication sharedApplication]delegate]; 
//addToFavouritesArray = [[NSMutableArray alloc] init]; 
NSMutableArray *tempArray1 = mainDelegate.delegateFavouritesArray; 
//NSMutableDictionary *tempDictionary1 = mainDelegate.delegateFavouritesDictionary; 
addToFavouritesArray = tempArray1; 

//self.addToFavouritesDictionary = tempDictionary1; 


NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"]; 
addToFavouritesDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

在detailViewController,在addToFavourites功能:

NSString *ID = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID"]; 

    if([[addToFavouritesDictionary allKeys] containsObject:ID]) { 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"]; 



     [addToFavouritesDictionary removeObjectForKey:ID]; 
     [addToFavouritesArray removeObject:Name]; 
     [favouritesButton setTitle:@"+ Favourites" forState:(UIControlState)UIControlStateNormal]; 
     [addToFavouritesDictionary writeToFile:filePath atomically: YES]; 
     NSLog(@"New Dictionary: %@", addToFavouritesDictionary); 

    } else { 

     [addToFavouritesArray addObject:Name]; 
     NSString *ID = [[NSUserDefaults standardUserDefaults]objectForKey:@"ID"]; 
     [addToFavouritesDictionary setObject:Name forKey:ID]; 
     [favouritesButton setTitle:@"- Favourites" forState:(UIControlState)UIControlStateNormal]; 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"]; 

     [addToFavouritesDictionary writeToFile:filePath atomically: YES]; 
     NSLog(@"Mutable Dictionary: %@", addToFavouritesDictionary); 
     //[addToFavouritesDictionary release]; 

    } 

在FavouritesViewController,在viewDidLoad中:

TabBar_NavigationBasedAppDelegate *mainDelegate = (TabBar_NavigationBasedAppDelegate *)[[UIApplication sharedApplication]delegate]; 


favouritesArray = [[NSMutableArray alloc] init]; 

NSMutableArray *tempArray1 = mainDelegate.delegateFavouritesArray; 
favouritesArray = tempArray1; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"]; 


favouritesDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath]; 

非常感谢所有帮助

回答

0

在您的applicationDidFinishLaunching:方法(所以每次你的应用程序启动),你首先创建一个空的NSMutableDictionary,然后编写到Saved.data,可能覆盖任何东西那可能是在那里。

+0

所以我应该检查它是否存在,如果是的话只是initWithContentsOfFile? – 2011-05-15 23:47:28

+0

是的,类似的东西。 – omz 2011-05-16 01:06:32

+0

您能举出任何例子吗? – 2011-05-16 08:20:14