gpt4 book ai didi

objective-c - 如何访问对象

转载 作者:行者123 更新时间:2023-11-29 04:58:01 25 4
gpt4 key购买 nike

我想循环访问 _news 项目。但不知道如何完成这件事。

Hierarchy of my Game-News structure

我的 Game.m 看起来像

#import "Game.h"

@implementation Game

@synthesize homename = _homename;
@synthesize guestname = _guestname;
@synthesize date = _date;
@synthesize gametype = _gametype;
@synthesize news = _news;
@synthesize gameId = _gameId;

-(NSString*)description{
return [NSString stringWithFormat:@"%@ gegen %@ (%@)", self.homename, self.guestname, self.gametype];
}

@end

我的 Game.h 看起来像

#import <Foundation/Foundation.h>
#import <RestKit/RestKit.h>
#import "News.h"

@interface Game : NSObject {
NSString* _homename;
NSString* _guestname;
NSString* _date;
NSString* _gametype;
NSNumber* _gameId;
// News* news;
@public
NSArray* _news;
}

@property (nonatomic, retain) NSString* homename;
@property (nonatomic, retain) NSString* guestname;
@property (nonatomic, retain) NSString* date;
@property (nonatomic, retain) NSString* gametype;
//@property (nonatomic, retain) News* news;
@property (nonatomic, retain) NSArray* news;
@property (nonatomic, retain) NSNumber* gameId;

@end

我的 News.h 看起来像

    #import <Foundation/Foundation.h>
#import <RestKit/RestKit.h>
@interface News : NSObject {
NSString* _minute;
NSString* _title;
NSString* _bodytext;
NSString* _player;
}

@property (nonatomic, retain) NSString* minute;
@property (nonatomic, retain) NSString* title;
@property (nonatomic, retain) NSString* bodytext;
@property (nonatomic, retain) NSString* player;


@end

我的 news.m 看起来像

#import "News.h"

@implementation News

@synthesize player = _player;
@synthesize title = _title;
@synthesize bodytext = _bodytext;
@synthesize minute = _minute;

@end

我想要访问变量的代码如下所示:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
NSLog(@"Loaded statuses: %@", objects);
HeaderText.text = [NSString stringWithFormat:@"%@", objects ];

// for(News* n in _news) NSLog([n _bodytext]);
// for (id object in objects) {
// NSLog(@"News = %@", object );
// }
}

带有对象的 NSLog 看起来很适合游戏。接下来的事情是我想做类似的事情(上面是伪代码而不是真实代码,因为我不知道如何正确执行):

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
NSLog(@"Loaded statuses: %@", objects);
HeaderText.text = [NSString stringWithFormat:@"%@", objects ];

// loop all
for (id object in objects) {
news = objects.news;
for (id mynews in news) {
NSLog(@"News minute = %@", news.minute );
NSLog(@"News title = %@", news.title );
NSLog(@"News bodytext = %@", news.bodytext );
NSLog(@"News player = %@", news.player );

}
}
}

如何正确执行 getter/setter 方法(以便我可以在这里使用它)?

很抱歉问了这个愚蠢的问题,但我不明白它的意义。

最佳答案

有两件事:

首先,_news 对象是私有(private)变量,没有属性声明(例如 getter 和 setter)吗? “_variableName”格式通常用于表示私有(private)变量。

第二,如果不是私有(private)变量,_news数组中的所有项是否都属于同一个类?

如果是这样,你可以这样做

for (NewsObject *theNewsObject in _news)
{
//code here
}

当您不知道数组中的对象是什么类型或者数组中包含的对象是否具有不同类型时,for(id randomObject in array) 非常有用。

现在,NewsObject 中的所有对象都应该是可以被其他类访问的公共(public)属性(它们应该具有 getter 和 setter)。

希望这有帮助。 :)

编辑更新的问题

所以,如果我正确地理解了你的问题,那么你有一个 Game 对象,其中包含一个 News 对象数组。

所以,在你的 Game.h 中

NSString* _homename;
NSString* _guestname;
NSString* _date;
NSString* _gametype;
NSNumber* _gameId;
NSArray * _newsObjects; //declare it as NSMutableArray if you need to mutate it

现在,您在其中声明您的属性;

@property(nonatomic, retain)NSArray *newsObjects

像平常在 Game.m 文件中一样合成它

您正在使用 @synthesize 指令自动创建 getter/setter。它为您创建 getter 和 setter。

同样,从您的代码来看,它看起来像是通过该方法传递的对象的 NSArray

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects

由游戏对象组成。

因此,要从 Game 对象数组中访问 News 对象,请在执行此方法的类中导入 News.h 和 Game.h,然后执行以下操作:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {
NSLog(@"Loaded statuses: %@", objects);

// loop all
for (Game *gameObject in objects) {
NSArray *newsObjectArray = [gameObject newsObjects] //or gameObject.newsObject
for (News *mynews in newsObjectArray) {
NSLog(@"News minute = %@", mynews.minute );
NSLog(@"News title = %@", mynews.title );
NSLog(@"News bodytext = %@", mynews.bodytext );
NSLog(@"News player = %@", mynews.player );

}
}
}

我在您的代码中发现,正在执行的代码未在您发布的示例的任何部分中声明。上面的代码将查找 Game 对象数组(称为 objects)。然后,对于该数组中的每个 gameObject,它将循环遍历该 gameObjectnewsObject 数组。

希望这有帮助。 :)

关于objective-c - 如何访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7586440/

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