首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从委托属性复制数组

从委托属性复制数组
EN

Stack Overflow用户
提问于 2012-03-14 16:21:53
回答 3查看 125关注 0票数 0

我有一个关于委托属性的小问题。

属性"shifts“是由AppDelegate初始化和填充的对象的NSMutableArray。

代码语言:javascript
复制
@interface isaavAppDelegate : UIResponder <UIApplicationDelegate> {
    NSMutableArray *shifts;
}
@property (nonatomic, retain) NSMutableArray *shifts;

在tableview控制器中,我尝试使用数组中的数据,如下所示:

我声明一个新的NSMutableArray changePersons:

代码语言:javascript
复制
NSMutableArray *changePersons;

然后在viewdidload方法中:

代码语言:javascript
复制
appDelegate = (isaavAppDelegate *)[[UIApplication sharedApplication] delegate];
changePersons = appDelegate.shifts;

所以我使用NSPredicate来过滤数组中的数据,但是当changePersons数组更改时,appDelegate.shifts也会更改,我不明白为什么……

我尝试像这样复制数组:

代码语言:javascript
复制
changePersons = [appDelegate.shifts];

但是当我尝试使用NSPredicate应用过滤器时,应用程序崩溃了,并且我得到了一个无效的选择器。

有人能帮我吗?

谢谢,马可

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-14 16:34:04

试一试

代码语言:javascript
复制
changePersons =[NSMutableArray arrayWithArray:appDelegate.shifts];
票数 1
EN

Stack Overflow用户

发布于 2012-03-14 16:32:19

试一试

代码语言:javascript
复制
//in the tableviewcontroller.h

@property (nonatomic, retain) NSMutableArray* changePersons;

然后

代码语言:javascript
复制
//in the .m

self.changePersons = [((AppDelegate *)[[UIApplication sharedApplication] delegate] shifts];

另外,如果您打算像上面那样使用app委托,我建议您在.pch文件中使用#定义,如下所示

//.pch文件

代码语言:javascript
复制
#import "AppDelegate.h"
#define UIAppDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])

那么上面的赋值代码读起来会更整洁一些。

代码语言:javascript
复制
self.changePersons = [UIAppDelegate shifts];
票数 0
EN

Stack Overflow用户

发布于 2012-03-14 20:34:06

试一试

代码语言:javascript
复制
changePersons = [appDelegate.shifts mutableCopy];

或者@Krrish的答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9698137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档