我在添加到收藏夾功能工作中遇到了一些麻煩。 下面是我使用的設置爲收藏夾數據的陣列和字典代碼:添加到收藏夾功能
在應用程序的委託,在「appDidFinishLaunching」:
delegateFavouritesDictionary = [NSMutableDictionary dictionary];
NSLog(@"Mutable Dictionary: %@", delegateFavouritesDictionary);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Saved.data"];
[delegateFavouritesDictionary writeToFile:filePath atomically: YES];
delegateFavouritesArray = [[NSMutableArray alloc] init];
我detailViewController
然後,我有一個addToFavourites功能:
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];
}
上面的代碼按預期工作,在應用程序啓動時,「Saved.data」的字典,並加載內容設置到字典,然後在detailViewController,它加載了「保存。數據「文件並添加或取消對該文件進行授權。我遇到的問題是iPhone重新啓動,所有收藏夾數據都消失了,或者應用程序崩潰並再次打開,收藏夾中的所有數據都消失了。每當設備重新啓動或關閉時,是否有任何方法保存數據而不被刪除?
非常感謝提前。
我沒有看到從任何地方的文件閱讀,這是一個錯字在問題中,或者你真的從來沒有讀過你的saved.data文件? – 2011-05-14 11:21:04
在detailViewController中,我啓動了viewDidLoad方法中的addToFavouritesDictionary,我忘了添加該代碼。 – 2011-05-14 11:35:30
好吧,看看我的答案,我想你只是在每次重新啓動時覆蓋你的數據。好吧,無論如何,我的數據並沒有從Documents文件夾中消失,僅僅是因爲我的iPhone已關閉,所以我沒有理由認爲你的數據應該被刪除。 – 2011-05-14 12:07:26