我有一个从plist文件中获取数据的类。
@interface myClass : NSObject
{
NSString *string;
}
@property (copy) NSString *string;
-(id)getData:(NSString *) a :(NSInteger) i;
@end
这是实施。
@implementation myClass
-(id)getData:(NSString *) a :(NSInteger) i
{
myClass *class = [[myClass alloc]init];
NSString *path = [[NSBundle mainBundle] pathToResource:a ofType:@"plist"];
NSArray *myArray = [[NSArray alloc] initWithContentsOfFile:path];
class.string = [myArray objectAtIndex:i];
return class;
}
我的方法getData
有一个字符串和一个整数参数。此方法被置于for循环内部,因此i
参数将是for循环索引。下面是它的内部方法。
-(id)init
{
self = [super init];
if (self)
{
//this is a NSMutableArray that i created in the .h file this method is in
list = [[NSMutableArray alloc]init];
for(int i = 0; i < 5; i++)
{
[list addObject:[[[myClass alloc]init] getData: @"file" :i]];
}
//this is a NSTextField that i create in the .h file that this init method is in
[instructions setStringValue:[list objectAtIndex:0].string];
}
return self;
}
我想要做的是将指令NSTextField的字符串值设置为我存储在NSMutableArray列表中的myClass.string
值。有没有办法做到这一点?
每次我尝试[instructions setStringValue:[list objectAtIndex:0].string].
当您将一个对象存储在一个列表中时,它是否不会继承该对象的实例变量,还是有另一种方法来访问它们?
答案 0 :(得分:0)
这里可以注意很多事情:
这句话应该是
self.list = [[NSMutableArray alloc] init];
像这样使用它:它也应该使用self
[self.instructions setStringValue:[[list objectAtIndex:0] string]];
现在出现问题:说明文本字段似乎是IBOutlet,你试图在init方法中访问它始终为零。
如果你在windowController中,那么setStringValue应该放在windowDidLoad方法中。 如果你在viewController中,那么setStringValue应该进入loadView。
注意:请在设置文本字段值之前调用[super loadView]。 如果它是一个文件,那么最好加载一次而不是在for循环中调用它,否则你就是好的。
希望这有帮助。