【问题标题】:notification to another view通知另一个视图
【发布时间】:2014-02-22 16:21:37
【问题描述】:

我试图认为某人但没有成功。 任何id

// MasterViewController
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:myParametersArray forKey:@"myParametersArray"]; // add 'string' as object with key name is also 'myArrayKey'
[userDefaults synchronize];

// Another View.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

myParametersArray  = [defaults objectForKey:@"myParametersArray"];
myParametersArray[STR_OPTION_PSEUDO] = [NSNumber  numberWithInteger:_RetainPseudoSwitch.enabled];

info myParametersArray 是 NSMutableArray

原因:'-[__NSCFArray insertObject:atIndex:]: 变异方法发送到不可变对象'

在 MasterViewController 中没问题,我可以将一个对象存储到我的数组中。 在第二个视图中,我收到了这个见上文

【问题讨论】:

  • 原因:'-[__NSCFArray insertObject:atIndex:]:变异方法发送到不可变对象'
  • 欢迎来到 SO !请始终在您的问题中直接包含错误消息和其他详细信息(如果有)!
  • NSMutableArray *myParametersArray
  • 您可以编辑您的问题,这样其他用户就不必阅读所有的 cmets
  • 小心,有些评论者对您存储的数据和位置非常挑剔。

标签: objective-c ios7 notifications xcode5


【解决方案1】:

我不明白您为什么使用这种方式发布通知,但我会尽力帮助您。

这一行会将 NSArray 对象分配给您的 myParametersArray 变量,并将其类型更改为 NSArray。你不能改变一个 NSArray 对象。

myParametersArray  = [defaults objectForKey:@"myParametersArray"]; 

用这个替换它:

myParametersArray = [NSMutableArray arrayWithArray:[defaults objectForKey:@"myParametersArray"]];

另外,你应该像这样设置数组对象:

[myParametersArray setObject:[NSNumber  numberWithInteger:_RetainPseudoSwitch.enabled] atIndex:[STR_OPTION_PSEUDO]];

【讨论】:

  • 事实上,我的所有视图都需要我的选项参数,并且在我的脑海中,我在 MasterViewController 中创建了一个可变数组。
  • 所以在第二个视图中我检索了我的数组,我会尝试这个解决方案,因为视图可以将对象放到我的主视图中
  • [myParametersArray setObject:[NSNumber numberWithInteger:_RetainPseudoSwitch.enabled] atIndexedSubscript:(STR_OPTION_PSEUDO)];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多