Как Исходный Список стиля iTunes был бы реализован с Bindings+CoreData в Какао?

Для C вы можете взглянуть на tcc , Tiny C Compiler. Запуск кода на C в качестве сценария является одним из его возможных применений.

7
задан Peter Hosey 9 November 2009 в 01:16
поделиться

2 ответа

I haven't had a lot of experience with core data, but I have made extensive use of Cocoa's bindings. In my experience, something like this works best with an intermediate NSArray of objects which is "manually" adjusted.

As an example, I imagine you would have a custom NSArray of playlists that are user-generated, and you would also have a separate NSArray containing your standard Library items. With this setup, I would create a property in one of your controllers called combinedArray, which would be the property that gets bound to your NSOutlineView. I would then bind your user-generated playlist array to the controller, and have some code in the controller automatically update the combined array whenever the playlist array is modified.

Here is a quick mock-up:

TheController.h

@interface TheController : NSObject
{
    NSArray * combinedArray;
    NSArray * userPlaylists;
}
@property (retain) NSArray * combinedArray;
@property (copy) NSArray * userPlaylists;
@end

TheController.m

@implementation TheController

@synthesize combinedArray;
@synthesize userPlaylists;
- (void)setUserPlaylists:(NSArray *)newLists
{
    // standard property setting code:
    if (newLists != userPlaylists)
    {
        [userPlaylists release];
        userPlaylists = [newLists copy];
    }

    // modify the combined array:
    NSMutableArray * allItems = [NSMutableArray arrayWithCapacity:0];
    [allItems addObjectsFromArray:standardLibrary];
    [allItems addObjectsFromArray:userPlaylists];
    [self setCombinedArray:allItems];
}

@end
6
ответ дан 7 December 2019 в 07:46
поделиться

Поскольку исходный список в этом случае на самом деле является "областью", а не простым списком, состоящим только из экземпляров некоторой сущности "LibraryItem", я думаю, что проще реализовать это "старомодным" "способ (т. е. протокол источника данных таблицы).

Это дает вам точный контроль над группированием, как и когда смешивать «статические» элементы (например, «Библиотека» и «Музыка», «Фильмы», «Списки воспроизведения») с элементами из вашего магазина (например, отдельные элементы списка воспроизведения. в разделе «Плейлисты»).

Также, на мой взгляд, немного проще справиться с перетаскиванием, что является ключевым при предотвращении перетаскивания элемента списка воспроизведения в вашу группу «Фильмы».

1
ответ дан 7 December 2019 в 07:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: