如何从视图控制器访问NSObject类/实例变量?

时间:2016-10-10 05:08:11

标签: ios objective-c class-method class-variables

我想将NSString值传递给NSObject类的类方法:+(void)loadTableData:(myCompletion) compblock;。所以我只能在类方法中使用类变量NSString *categoryID。我在 .h 文件中声明它,试图让它也用于公共访问。但我尝试了很多方法,只能在下面声明。其他职位会给我警告。

#import <Foundation/Foundation.h>

typedef void(^myCompletion)(NSArray *);
NSString *categoryID;

@interface ThirdVCLoadTable : NSObject
+ (void)loadTableData:(myCompletion) compblock;
@end

然后问题是我仍然无法在我的视图控制器类中访问它。错误消息始终为:在“ThirdVCLoadTable”类型的对象上找不到属性“categoryID”,无论我尝试访问NSString *categoryID

例如,

ThirdVCLoadTable *load = [[ThirdVCLoadTable alloc] init];
load.categoryID = [NSString stringWithFormat:@"%li", (long)indexPath.row + 1];

3 个答案:

答案 0 :(得分:0)

这不是班级的财产。试试

@property (copy, nonatomic) NSString * categoryID;

低于@interface

答案 1 :(得分:0)

在该类中声明一个属性,稍后您将从另一个视图调用该属性。

假设在viewcontrollerA中,在.h

@property(copy,nonatomic)NSString * StrName;

在viewcontrollerB中,实现它:

viewcontrollerA *vc = [[viewcontrollerA alloc]    initWithNib:@"viewcontrollerA" bundle:nil];
vc.StrName = @"XYZ";
[self pushViewController:vc animated:YES];

从中获得更多帮助:

How to use NSString from NSObject class in multiple Classes (View Controllers)

Passing Data between View Controllers

答案 2 :(得分:0)

第1步:   假设我的ClassName是Info。

Info.h file

@interface Info : NSObject
typedef void(^myCompletion)(NSArray *);

@end
@interface ThirdVCLoadTable : NSObject

@property (strong, nonatomic) NSString * categoryID;

+ (void)loadTableData:(myCompletion) compblock;

Info.m文件

+ (void)loadTableData:(myCompletion) compblock {

}

如果要在viewControllers中访问类方法而不是 你可以使用像

ThirdVCLoadTable* load = [[ThirdVCLoadTable alloc] init];
load.categoryID = [NSString stringWithFormat:@"%li", (long)indexPath.row + 1];