gpt4 book ai didi

ios - 从 NSObject 的属性中检索数据

转载 作者:行者123 更新时间:2023-11-29 02:51:09 25 4
gpt4 key购买 nike

我有一个名为 GlobalArray 的类,它是一个 NSObject。它有一个名为 globalDataNSArray 属性。

我正在将数据传递到我的 ViewControllerOne.m 中的 globalData,它工作完美,我可以在控制台中打印日志。问题是,我无法在 ViewControllerTwo.m 中检索此数据。

全局数组.h

#import <Foundation/Foundation.h>

@interface GlobalArray : NSObject

@property (nonatomic, retain) NSArray *globalData; // why retain?

全局数组.m

#import "GlobalArray.h"

@implementation GlobalArray

- (id) init
{
self = [super init];
if(self)
{
self.globalData = [[NSArray alloc] init];
}
return(self);
}

ViewControllerOne.m(GlobalArray.h导入.h)

- (void)viewWillAppear:(BOOL)animated {

[PubNub requestHistoryForChannel:my_channel from:nil to:nil limit:100 reverseHistory:NO withCompletionBlock:^(NSArray *message, PNChannel *channel, PNDate *fromDate, PNDate *toDate, PNError *error) {

GlobalArray *fromHistory = [[GlobalArray alloc] init];
fromHistory.globalData = message;
NSLog(@"TEST LOG 1 %@", fromHistory.globalData);

}];
}

我尝试以这种方式在 ViewControllerTwo.m 中检索它:(导入了 ViewController.h 和 GlobalArray.h)

-(void) viewWillAppear:(BOOL)animated {

GlobalArray *history = [[GlobalArray alloc] init];
NSArray *sampleArr = [[NSArray alloc] init];
sampleArr = history.globalData;
NSLog(@" TEST LOG2 %@", sampleArr);


}

但是 TEST LOG2 是空的。我想我在 ViewControllerTwo.m 中遗漏了一些东西,但无法弄清楚,对我来说它似乎是正确的。

最佳答案

如果您想避免经典的单例模式,您可以将 session 对象绑定(bind)到应用程序委托(delegate)并实现登录/注销的方法:

@interface XXXAppDelegate : UIResponder <UIApplicationDelegate>

+ (XXXSession *)loginWithUserName:(NSString*)userName password:(NSString*)password;
+ (void)logout;

+ (XXXSession)currentSession;

@end

然后定义 session 中管理的数据:

@interface XXXSession : NSObject

@property (nonatomic, retain) NSArray *globalData;

@end

在 application:didiFinishLaunchingWithOptions: 或者你的应用程序需要的地方初始化 session 对象:

@implementation XXXAppDelegate {
XXXSession *_currentSession;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self loginWithUserName: @"Test"];
}

@end

在您的 ViewController 中,您可以获得如下 session :

[XXXAppDelegate currentSession].globalData

这种方法类似于单例对象,区别在于单例类本身不提供对实例的访问(如本设计模式的定义所述),而是在应用程序委托(delegate)中实现。

关于ios - 从 NSObject 的属性中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24509068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com