我对委托属性有一点问题。
属性“shifting”是一个NSMutableArray对象,由AppDelegate初始化和填充。
@interface isaavAppDelegate : UIResponder <UIApplicationDelegate> {
NSMutableArray *shifts;
}
@property (nonatomic, retain) NSMutableArray *shifts;
在tableview控制器中,我尝试使用数组中的数据:
我宣布一个新的NSMutableArray changePersons:
NSMutableArray *changePersons;
然后在viewdidload方法中:
appDelegate = (isaavAppDelegate *)[[UIApplication sharedApplication] delegate];
changePersons = appDelegate.shifts;
所以我使用NSPredicate来过滤数组中的数据,但是当changePersons数组发生变化时,appDelegate.shifts也会发生变化,我不明白为什么......
我试图像这样复制数组:
changePersons = [appDelegate.shifts];
但是当我尝试使用NSPredicate应用过滤器时,应用程序崩溃并且我得到一个无效的选择器。
任何人都可以帮助我?
谢谢,Marco
答案 0 :(得分:1)
尝试
changePersons =[NSMutableArray arrayWithArray:appDelegate.shifts];
答案 1 :(得分:0)
尝试
//in the tableviewcontroller.h
@property (nonatomic, retain) NSMutableArray* changePersons;
然后
//in the .m
self.changePersons = [((AppDelegate *)[[UIApplication sharedApplication] delegate] shifts];
此外,如果你打算如上所述使用app delegate,我建议你在.pch文件中使用#define,这样
//。pch文件
#import "AppDelegate.h"
#define UIAppDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
然后上面的赋值代码会有点整洁
self.changePersons = [UIAppDelegate shifts];
答案 2 :(得分:0)
尝试
changePersons = [appDelegate.shifts mutableCopy];
或@Krrish的回答