0

我正在尝试构建一个可以与 iTunes 一起使用的应用程序。于是,我将框架导入到我的项目中,并创建了一个小类,仅供学习之用,如下:

-(NSMutableArray *)processMediaItems:(NSArray *)mediaItems {
    NSMutableArray *titles = [NSMutableArray new];

    if (mediaItems) {
        for (ITLibMediaItem *item in mediaItems) {
            [titles addObject:[item.title]];
        }
    }
    return titles;
}

然后我决定为它创建一个单元测试,并做了以下事情:

- (void)testExample {    
    ITLibMediaItem *mediaItem = [[ITLibMediaItem alloc] init];
    //mediaItem.title = @"I Still Haven't Found What I'm Looking For";

    NSMutableArray *mediaItems = [NSMutableArray new];
    [mediaItems addObject:mediaItem];

    MyClass *mc = [MyClass new];
    NSMutableArray *titles = [mc processMediaItems:mediaItems];
}

问题是该属性title是只读的。

所以我的问题是,如何创建一个带有标题的新 ITLibMediaItem 对象?我试图阅读 API ( ITLibMediaItem ) 但没有找到可以帮助的初始化...

4

1 回答 1

0

我找到了。中的属性ITLibMediaItem使用以下方式填充setValuesForKeysWithDictionary

NSMutableDictionary *properties = [NSMutableDictionary dictionary];
[properties setObject:@"I Still Haven't Found What I'm Looking For" forKey:@"title"];

ITLibMediaItem *mediaItem = [[ITLibMediaItem alloc] init];
[mediaItem setValuesForKeysWithDictionary:properties];

NSMutableArray *mediaItems = [NSMutableArray new];
[mediaItems addObject:mediaItem];
于 2017-02-16T09:19:21.677 回答