“SEL”类型的集合元素不是Objective-C对象

时间:2015-11-30 03:36:46

标签: ios objective-c

我正在尝试给出一个NSMutableArray值'SEL',而XCode正在给我这个错误。我的代码:

SEL camera=@selector(p_userAlbum);
NSMutableArray *sels=@[camera].mutableCopy;

是否有办法将SEL放入数组?

2 个答案:

答案 0 :(得分:3)

使用NSStringFromSelectorNSSelectorFromString

很容易做到
//Save
SEL camera=@selector(p_userAlbum);
NSString * selName = NSStringFromSelector(camera);
NSMutableArray *sels=@[selName].mutableCopy;

//Get
NSString * name = sels[0];
SEL mySel = NSSelectorFromString(name);

答案 1 :(得分:0)

它的自我解释,'SEL'不是Objective-C对象,NSArrays只能保存objective-c对象。但是你可以做的是使用一个可以调用你的函数的块(或者只是实际的代码),因为块是objective-c对象,并将它们插入到你的数组中。

例如:

typedef void (^blockType)();

blockType blockName = ^(){
    //execute code or your function
};

NSArray *array = @[blockName];

blockType block = array[0]; //get the block out of the array later

block(); //run the block which will run your function or code