Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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中设置NSMutableDictionary时出现问题_Ios_Objective C_Nsmutabledictionary - Fatal编程技术网

Ios 在另一个NSMutableDictionary中设置NSMutableDictionary时出现问题

Ios 在另一个NSMutableDictionary中设置NSMutableDictionary时出现问题,ios,objective-c,nsmutabledictionary,Ios,Objective C,Nsmutabledictionary,我需要获取用户提交的信息,将该信息存储在NSMutableDictionary中,然后将该NSMutableDictionary存储在另一个NSMutableDictionary中,然后将其编码到另一个类中。无论出于何种原因,我似乎无法将第一个NSMutableDictionary存储在另一个NSMutableDictionary中 由于工作规则,我不得不精简这里的代码,如果它似乎遗漏了什么,我很抱歉。我只发布了我遇到麻烦的部分 UserInfo.h: #import <Foundatio

我需要获取用户提交的信息,将该信息存储在NSMutableDictionary中,然后将该NSMutableDictionary存储在另一个NSMutableDictionary中,然后将其编码到另一个类中。无论出于何种原因,我似乎无法将第一个NSMutableDictionary存储在另一个NSMutableDictionary中

由于工作规则,我不得不精简这里的代码,如果它似乎遗漏了什么,我很抱歉。我只发布了我遇到麻烦的部分

UserInfo.h:

#import <Foundation/Foundation.h>

@interface MyPlanInfo : NSObject <NSCoding>

@property (nonatomic, strong) NSMutableDictionary *emergencyDictionary;

@end
在infoView.m中,addToDictionary方法中,userInfo是用户输入信息的数组,userKey是key的数组。emergencyContactInfo NSMutableDictionary工作正常,所有内容都在其中,但当我尝试将其设置为新NSMutableDictionary中的对象时,对于密钥,它不起作用。一切都是零

有人知道我做错了什么吗


编辑:如果你否决了投票,请留下一个原因,说明原因,这样我就可以避免将来做任何我做错的事情。

在下面的一行中,你正在使用普通
alloc
/
init
创建一个
MyPlanInfo
的实例:

self.myPlanInfoObject = [[MyPlanInfo alloc] init];
- (id) init
{
    if ((self = [super init])) {
       emergencyDictionary = [[NSMutableDictionary alloc] init];
    }
    return self;
}
但是,至少在提供的代码中,您没有在
MyPlanInfo
中重写
init
,而是在
initWithCoder:
中重写:

- (id) initWithCoder:(NSCoder *)coder
{
    self = [super init];

    self.emergencyDictionary = [coder decodeObjectForKey:emergencyDictionaryKey];

    return self;
}
当您仅使用普通的
init
时,
myplannifo
emergencyDictionary
实例变量将为
nil
。您可能应该在
MyPlanInfo
中添加如下内容以覆盖
init

self.myPlanInfoObject = [[MyPlanInfo alloc] init];
- (id) init
{
    if ((self = [super init])) {
       emergencyDictionary = [[NSMutableDictionary alloc] init];
    }
    return self;
}

这将确保新创建的
myplannifo
实例有一个合适的
NSMutableDictionary
,可以从其他类中进行操作。

感谢您的回复。我试过了,但似乎不起作用。我能够以这种方式存储其他数据类型。例如,如果我想存储UITextField中的NSString,我可以键入
self.myPlanInfoObject.name=textField.text而且效果很好。接得好。我打赌就是这样。不过,我关于单步执行代码的建议仍然有效。
- (id) init
{
    if ((self = [super init])) {
       emergencyDictionary = [[NSMutableDictionary alloc] init];
    }
    return self;
}