Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对于';没有可见的@界面;NSMutableDictionary';声明选择器';addObjects:forKey';_Ios_Objective C_Cocoa Touch_Compiler Errors_Nsmutabledictionary - Fatal编程技术网

Ios 对于';没有可见的@界面;NSMutableDictionary';声明选择器';addObjects:forKey';

Ios 对于';没有可见的@界面;NSMutableDictionary';声明选择器';addObjects:forKey';,ios,objective-c,cocoa-touch,compiler-errors,nsmutabledictionary,Ios,Objective C,Cocoa Touch,Compiler Errors,Nsmutabledictionary,我的代码给出了一个错误 “NSMutableDictionary”没有可见接口声明选择器“addObjects:forKey:” h m 我不明白为什么这个iAction不允许我向NSMutableDictionary添加对象,因为NSMutableDictionary中没有实例方法addObjects:forKey: 您正在寻找的方法是setObject:forKey:。() 如果你说为什么你认为这个方法应该是addObjects:forKey:,我可以用一种更通用的方式帮助你。但一般来说,

我的代码给出了一个错误


“NSMutableDictionary”没有可见接口声明选择器“addObjects:forKey:”

h


m


我不明白为什么这个
iAction
不允许我向
NSMutableDictionary
添加对象,因为
NSMutableDictionary
中没有实例方法
addObjects:forKey:

您正在寻找的方法是
setObject:forKey:
。()

如果你说为什么你认为这个方法应该是
addObjects:forKey:
,我可以用一种更通用的方式帮助你。但一般来说,你需要查看苹果的文档(如上面的链接,通常只需谷歌搜索类名),或者在标题中查找,在Xcode中,你可以按Cmd-Shit-O,然后键入类名,然后从那里打开标题


在本例中,提示您使用了错误的方法是
addObjects
是复数形式(而
forKey
不是),并且您只尝试添加一个对象

可能是因为方法名是
setObject:forKey:

没有这样的方法
addObjects:forKey:
,这没有意义,因为让多个对象对应一个键没有意义。但是如果你想在一次调用中为键添加多个对象,如果你愿意的话,通过一个类别添加一些东西是很容易的。例如:

#import <Foundation/Foundation.h>

@interface NSMutableDictionary (CBVAdditions)

- (void)cbvSetObjects:(NSArray *)objects forKeys:(NSArray *)keys;

@end

@implementation NSMutableDictionary (CBVAdditions)

- (void)cbvSetObjects:(NSArray *)objects forKeys:(NSArray *)keys
{
    NSDictionary *tempDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    [self addEntriesFromDictionary:tempDictionary];
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSMutableDictionary *md = [NSMutableDictionary dictionary];
        [md cbvSetObjects:@[@"obj1", @"obj2"] forKeys:@[@"key1", @"key2"]];
        NSLog(@"md = %@", md);
    }
}
#导入
@接口NSMutableDictionary(CBVAdditions)
-(void)cbvSetObjects:(NSArray*)对象forkey:(NSArray*)键;
@结束
@实现NSMutableDictionary(CBVAdditions)
-(void)cbvSetObjects:(NSArray*)对象forkey:(NSArray*)键
{
NSDictionary*tempDictionary=[NSDictionary Dictionary WithObjects:objects forKeys:keys];
[self addEntriesFromDictionary:tempDictionary];
}
@结束
int main(int argc,char*argv[]){
@自动释放池{
NSMutableDictionary*md=[NSMutableDictionary];
[md cbvSetObjects:@[@“obj1”、@“obj2”]forKeys:@[@“key1”、@“key2”];
NSLog(@“md=%@”,md);
}
}
输出:

2014-05-07 15:51:03.056无标题[38754:507]md={ 键1=obj1; key2=obj2;}


你有没有检查过NSMutableArray的规范,看看是否定义了
addObjects:forKey:
?@HotLicks,尽管它很有用,因为OP正在尝试将对象添加到字典中……为什么你要调用名为
addObject
s
的方法,但无论如何只传递一个对象?@Jonathan.-哎呀!!;)用户,两个非常关键的编程技能是学习查找和使用参考文档,以及学习实际阅读错误消息(而不仅仅是将它们解释为“哦,有什么神秘的错误”)。你基本上在这两方面都不及格。下次请尽量做得更好。不,不行。没有必要对OP如此咄咄逼人。这是他们的第一个问题,他们已经15岁了。让我们试着不要让人们远离stackoverflow和编程?这将对我有很大帮助。谢谢你,我以前从未见过这一点,我会投票支持它,但我的声誉不高。你知道界面和选择器是什么吗?如果你仔细阅读苹果文档中的介绍页面,就会知道它们是什么,你自己就能理解错误信息。在这里提问并不是错误的做法,下一次当你遇到错误时,你可以自己解决,这会更快:)它确实回答了问题,从问题的上下文来看,他寻找的方法不是
addObjects:forKey:
(不存在)它是
setObject:forKey:
。即使我把set-object:forKey:放在上面,它也会给我同样的错误没有可见的“NSMutableDictionary”接口声明选择器“addObject:forKey:”将
addObject:forKey:
更改为
setObject:forKey:
,这似乎就是您实际寻找的方法。谢谢,我没有收到错误但当我测试它时,我可以注册用户名和密码,但它不允许我用新的用户名和密码登录
@implementation ViewController

-(IBAction)registerlogin{

    [credtialsDictionary addObjects:passwordFieldregister.text forKey:usernameFieldregister];
}
@end
#import <Foundation/Foundation.h>

@interface NSMutableDictionary (CBVAdditions)

- (void)cbvSetObjects:(NSArray *)objects forKeys:(NSArray *)keys;

@end

@implementation NSMutableDictionary (CBVAdditions)

- (void)cbvSetObjects:(NSArray *)objects forKeys:(NSArray *)keys
{
    NSDictionary *tempDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
    [self addEntriesFromDictionary:tempDictionary];
}

@end

int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSMutableDictionary *md = [NSMutableDictionary dictionary];
        [md cbvSetObjects:@[@"obj1", @"obj2"] forKeys:@[@"key1", @"key2"]];
        NSLog(@"md = %@", md);
    }
}