所以我正在创建一个名为fruits的数组,我希望在多个视图之间共享。这是我的代码:
#import <foundation/Foundation.h>
@interface MyManager : NSObject {
NSMutableArray *fruits;
}
@property (nonatomic, retain) NSMutableArray *fruits;
+ (id)sharedManager;
@end
#import "MyManager.h"
static MyManager *sharedMyManager = nil;
@implementation MyManager
@synthesize fruits;
#pragma mark Singleton Methods
+ (id)sharedManager {
@synchronized(self) {
if (sharedMyManager == nil)
sharedMyManager = [[self alloc] init];
}
return sharedMyManager;
}
- (id)init {
if ((self = [super init])) {
fruits = [[NSMutableArray alloc] init];
}
return self;
}
-(void) dealloc{
self.fruits = nil;
[super dealloc];
}
@end
现在我正在使用以下代码,以便我可以在新视图中使用锻炼
#import "MyManager.h"
@interface Chest : UIViewController {
IBOutlet MyManager *fruits;
}
@property (nonatomic, retain) IBOutlet MyManager *fruits;
-(IBAction) goToList: (id) sender;
@end
单击一个按钮时,将调用goToList,并填充我的数组,fruits
#import "Chest.h"
@implementation Chest
@synthesize fruits;
-(IBAction) goToList:(id)sender{
MyManager *fruits = [MyManager sharedManager];
NSString *filePath;
NSString *fileContents;
filePath = [[NSBundle mainBundle] pathForResource:@"chest_strength" ofType:@"csv"];
fileContents = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
fruits = [fileContents componentsSeparatedByString:@"\n"];
}
当我在这个视图中输出* fruits的元素时,一切正常。现在,当我尝试在另一个视图中访问这个相同的变量时,它表示该数组为null。这是第二个视图的代码:
@interface List : UIViewController {
IBOutlet MyManager *fruits;
}
@property (nonatomic, retain) IBOutlet MyManager *fruits;
@end
#import "List.h"
#import "MyManager.h"
@implementation List
@synthesize fruits
NSLog(@"%@", fruits); //This is the part that isn't displaying correctly. I'm getting a null here
所以我的问题是,我该如何做到这一点,以便我可以获得我在Chest中填充的数组,并在List中使用它,以便我可以在该视图中显示数组的内容?
感谢所有回答的人。这个问题严重阻碍了我,我需要尽快完成这个项目。非常感谢。
答案 0 :(得分:0)
你在这个问题中改变了一些东西,但基本问题仍然存在:数组是你的单身人士的属性,而你并没有这样对待它。
每当你在单身之外引用数组时,就这样做:
[MyManager sharedManager].fruits
如果您经常访问它,您可以创建一个本地ivar,但您肯定不会将它作为IBOutlet,您在上一个代码示例中正在进行此操作。这怎么会被设定?