我很難找到這個例子/教程/信息。我想在我的應用程序中添加「添加到收藏夾」按鈕。這將從一個tableview中獲取一個單元格,並將該單元格填充到「收藏夾」tableview中。核心數據是解決這個問題的正確方向嗎?我已經看到使用nsmutablearray和/或nsuserdefaults的一些提示。不確定要走哪條路。任何建議表示讚賞。「添加到收藏夾」按鈕的核心數據?
回答
如果您需要跨用戶會話持久存儲,則核心數據可能是最佳途徑。 NSUserDefaults更適用於 - 用戶默認值。雖然我認爲保存用戶的主頁是合適的,但在NSUserDefaults中,可能會變大的內容(如收藏夾)應該放在數據存儲區中。
如果您從不需要搜索列表,並且您只想保存並顯示它,請查看plist文件。 NSArray可以將數據直接寫入到writeToFile:atomically:
的plist文件中。您可以使用arrayWithContentsOfFile:
獲取該數據。
如果採用上述方法,有一點需要注意 - arrayWithContentsOfFile:
是靜態類方法,而不是實例方法。
核心數據是迄今爲止最靈活的選擇。使用「使用核心數據」在XCode中嘗試使用「基於導航的應用程序」的模板應用程序。大多數示例代碼就在那裏。
我將此功能添加到了我的詳細視圖中。我的實體具有「最喜歡的」屬性。在詳細視圖按下「喜愛」按鈕設置爲喜愛的屬性的字符串,並開啓和關閉切換的明星形象:
- (IBAction)flagButtonPressed:(id)sender {
if (flagButtonSelected == 0) {
[flagButton setSelected:YES];
flagButtonSelected = 1;
[flagButtonImage setImage:[UIImage imageNamed:@"yesFavorite.png"]];
[myCoolEntity setValue:@"yesFlag" forKey:@"flagSet"];
} else {
[flagButton setSelected:NO];
flagButtonSelected = 0;
[flagButtonImage setImage:[UIImage imageNamed:@"noFavorite.png"]];
[myCoolEntity setValue:@"noFlag" forKey:@"flagSet"];
}
NSManagedObjectContext *context = myCoolEntity.managedObjectContext;
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Tried to save fav. Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
然後回到我的主表視圖,我在導航欄中的收藏夾按鈕用NSFetchedResultsController和謂詞查找具有「flagSet」屬性設置爲「yesFlag」的所有實體。
- (NSFetchedResultsController *)fetchedResultsController {
// Set up the fetched results controller if needed.
if (fetchedResultsController == nil) {
// Create the fetch request for the entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyCoolEntity" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"flagSet like 'yesFlag'"];
[fetchRequest setPredicate:predicate];
//set batch size
[fetchRequest setFetchBatchSize:20];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"name" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
}
return fetchedResultsController;
}
另外,在viewDidLoad中的細節視圖我顯示在收藏夾按鈕的星形圖像酌情:
//flag button
if ([myCoolEntity.flagSet isEqual:@"yesFlag"]) {
[flagButtonImage setImage:[UIImage imageNamed:@"yesFavorite.png"]];
[flagButton setSelected:YES];
flagButtonSelected = 1;
} else {
[flagButtonImage setImage:[UIImage imageNamed:@"noFavorite.png"]];
[flagButton setSelected:NO];
flagButtonSelected = 0;
}
這正是我所想過的,感謝這個偉大的例子,它一直在尋找www。 – ingenspor 2012-08-08 06:51:45
如果收藏夾的數量是可能保持可管理(比如高達100- 200左右),你最好使用NSUserDefaults
的方法。在這種情況下,我只會建議使用核心數據,如果你也有其他需求。使用Core Data不是微不足道的。將數據存儲在單獨的plist中也是一種很好的合理方法。
不要嚇跑你遠離核心數據。這是很棒的東西,我鼓勵你學習它,但如果你在這種情況下使用它,你可能會過度工程。
- 1. 添加單元格到核心數據的收藏夾tableview
- 2. 添加到收藏夾按鈕幫助
- 3. Angular添加到收藏夾
- 4. 添加到收藏夾,jquery
- 5. Magento添加到收藏夾
- 6. 添加到收藏夾
- 7. 添加到收藏夾Array
- 8. 檢查覈心數據數據庫中的已保存ID並在Swift中顯示/隱藏按鈕「添加到收藏夾」3
- 9. iPhone實現無核心數據的收藏夾列表?
- 10. 添加到收藏夾添加喜愛的html頁面的按鈕頁面
- 11. 收藏夾按鈕withXMLHttpRequest
- 12. 添加數據表編輯器收藏夾一些自定義的按鈕
- 13. 從NSImageView添加圖像到核心數據(路徑URL到核心數據和圖像到文件夾)
- 14. 將實體添加到核心數據
- 15. 將@propertys添加到核心數據類
- 16. 的jQuery - 添加到收藏夾
- 17. 添加一個按鈕,進入收藏夾使用JS
- 18. 將我的Facebook應用程序添加到收藏夾的按鈕?
- 19. 添加一個按鈕到收藏夾中進行的插入JavaScript的
- 20. Rails 5:實現'添加到收藏夾'
- 21. HTML-添加和刪除到收藏夾
- 22. 添加到收藏夾功能[swift]
- 23. 「添加到收藏夾」用JavaScript在Opera
- 24. 添加到收藏夾/書籤:更新
- 25. 收藏夾 - 添加元素到集合
- 26. 添加到收藏夾功能iPhone
- 27. Php將文章添加到收藏夾
- 28. 添加到收藏夾(多個模型)
- 29. 添加到收藏夾功能?
- 30. 歡迎頁面添加到收藏夾
Coolbeans。感謝您的建議!我一定會深入核心數據。 – Chunjai 2010-07-20 04:37:39