Objective c 在方法中添加多个对象

Objective c 在方法中添加多个对象,objective-c,Objective C,有没有办法通过自定义方法将多个对象添加到NSMutableArray中?这是我的密码 @property NSMutableArray *MusicCollectionArray; -(void) addPlaylist: (Playlist *) thePlaylist; 现在让我们假设我调用了这个方法,但是不是要添加一个对象,而是有一种方法可以将多个对象添加到一个对象中,而不是单独调用每个方法。(对象的数量未知) 例如[mycollection添加播放列表:第一、第二、第三]

有没有办法通过自定义方法将多个对象添加到NSMutableArray中?这是我的密码

@property NSMutableArray *MusicCollectionArray;

    -(void) addPlaylist: (Playlist *) thePlaylist;

现在让我们假设我调用了这个方法,但是不是要添加一个对象,而是有一种方法可以将多个对象添加到一个对象中,而不是单独调用每个方法。(对象的数量未知)


例如[mycollection添加播放列表:第一、第二、第三]

您可以像这样添加另一个数组:

NSMutableArray *sourceArray = [NSMutableArray arrayWithObject:@"FirstObject"];

NSString *secondObject = @"SecondObject";
NSString *thirdObject = @"ThirdObject";

NSArray *objectsToAdd = @[secondObject, thirdObject];

[sourceArray addObjectsFromArray:objectsToAdd];

这是可能的,请看一下苹果文档和这个帖子:

#导入
@接口NSMutableArray(variadicMethodExample)
-(void)appendObjects:(id)firstObject,…;//此方法接受以零结尾的对象列表。
@结束
@NSMutableArray的实现(variadicMethodExample)
-(void)appendObjects:(id)firstObject。。。
{
每个项目的id;
va_列表参数列表;
if(firstObject)//第一个参数不是varargs列表的一部分,
{//所以我们将分别处理。
[自添加对象:第一个对象];
va_start(argumentList,firstObject);//开始扫描firstObject之后的参数。
while(eachObject=va_arg(argumentList,id))//尽可能多地获取类型为“id”的参数
[self addObject:eachObject];//这不是零,请将其添加到self的内容中。
va_end(论点列表);
}
}
@结束

我想你会发现一个想法。

最好使用for循环:

- (void) addPlaylistFromPlayLists:(NSArray <Playlist*>*)playlists {
    for (Playlist *playlist in playlists) {
        [musicCollectionArray addObject:playlist];  
    }  
}  
-(void)addplaylifromplaylists:(NSArray*)播放列表{
用于(播放列表*播放列表中的播放列表){
[musicCollectionArray添加对象:播放列表];
}  
}  

这样,您就可以确保只添加阵列中的播放列表。for循环只会添加给定的内容,如果它是for/in,则不必告诉它多少。

将数组传递给方法我喜欢这样,但我会使用
addObjectsFromArray
而不是for循环。
#import <Cocoa/Cocoa.h>

@interface NSMutableArray (variadicMethodExample)

- (void) appendObjects:(id) firstObject, ...; // This method takes a nil-terminated list of objects.

@end

@implementation NSMutableArray (variadicMethodExample)

- (void) appendObjects:(id) firstObject, ...
{
id eachObject;
va_list argumentList;
if (firstObject) // The first argument isn't part of the varargs list,
  {                                   // so we'll handle it separately.
  [self addObject: firstObject];
  va_start(argumentList, firstObject); // Start scanning for arguments after firstObject.
  while (eachObject = va_arg(argumentList, id)) // As many times as we can get an argument of type "id"
      [self addObject: eachObject]; // that isn't nil, add it to self's contents.
  va_end(argumentList);
  }
}

@end
- (void) addPlaylistFromPlayLists:(NSArray <Playlist*>*)playlists {
    for (Playlist *playlist in playlists) {
        [musicCollectionArray addObject:playlist];  
    }  
}