我有这个奇怪的问题,在我的一个ViewControllers
中,我像这样初始化我的字典:
- (void)viewDidLoad {
[super viewDidLoad];
profileData = [NSMutableDictionary dictionaryWithDictionary:@{@"userName":@"",
@"userPhone":@"",
@"userEmail":@"",
@"userBirthDate":@""}];
}
它是用户配置文件视图控制器的一部分,它有一个保存按钮,带有此处理程序:
[editProfileRequest editProfileRequest:editProfileRequestResponse
userName:profileData[@"userName"]
userEmail:profileData[@"userEmail"]
phone:profileData[@"userPhone"]
userBirthDate:profileData[@"userBirthDate"]
userGender:@""];
如果首次安装并启动该应用,则每次用户点击保存时都会崩溃,因为所有键值对都会从profileData
消失
在第一次发布之后的每次发布都一切正常,字典保存值。我有三重检查 - 根据第一次启动条件没有清除字典。我按以下方式为键指定值:
profileData[@"userName"] = profileContainer.userName;
...
XCode
版本7.2,iOS 9.2.1
有没有人遇到过这个?讨厌这种黑魔法。
答案 0 :(得分:0)
试试这个:
@property(strong,retain) NSMutableDictionay *profileData;
- (void)viewWillAppear {
[super viewWillAppear];
profileData = [NSMutableDictionary dictionaryWithDictionary:
@{@"userName":@"", @"userPhone":@"", @"userEmail":@"",@"userBirthDate":@""}];
}
如果您不使用ARC,则可以提出保留。
[profileData retain];
希望这有效!!
答案 1 :(得分:0)
您正在使用便捷方法初始化字典,即您没有字典的所有权。如果您希望将其保留在alloc
之外,则应init
viewDidLoad
。
P.S。:是的,在这种特殊情况下,没有涉及 BLACK MAGIC 。
答案 2 :(得分:0)
在.h文件中指定NSMutableDictionary
@property(strong,retain) NSMutableDictionay *profileData;
并在.m文件中使用
self.profileData = [[NSMutableDictionary alloc] initWithDictionary:
@{@"userName":@"", @"userPhone":@"", @"userEmail":@"",@"userBirthDate":@""}];