确定。这可能听起来很简单,但我需要帮助。来自Java背景,如果你忍受我,请欣赏它。我会将我的问题分解成更细粒度的形式,供所有人理解。所以我有一个调用数据库的类,它实际上抓住了一个用户密钥。所以我需要通过许多类共享该用户密钥。所以,我的直觉告诉我为变量制作getter和setter。所以这就是我所说的功能:
-(void) getUserKey{
NSString * showKey = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement, 0)];
//Setter for showKey
[self showKey:showKey];
//For experimenting, I attempt to set a property and try to access it.
self.SHOWKEY = showKey;
}
以下是我从数据库返回的密钥的getter和setter。
- (void) showKey:(NSString *)n{
NSLog(@"%@",n);
globalShowKey = n;
}
- (NSString*) showPath {
return globalShowKey;
}
现在这里我遇到麻烦,当我调用这个方法组合其他类的文件路径时,我的全局显示键突然变为零。
-(NSString *)globalShowPath{
NSString *mainDbPath = [PATH stringByAppendingPathComponent:CLIENT_KEY];
//Nil
NSString * showKey = [self showPath];
NSString *subDirectory = [mainDbPath stringByAppendingPathComponent:showKey];
return subDirectory;
}
我做错了什么?我需要从这个简单的错误中吸取教训!啊!
这是我的标题供参考:
AppDelegate.h
{
NSString * globalShowKey;
}
@property (strong, readwrite) NSString *SHOWKEY;
-(NSString *)globalShowPath;
- (NSString*) showPath;
答案 0 :(得分:1)
如果你有一个你需要传递数据的类的实例,你可以在.h中设置相关变量
@property NSString *profileKey;
例如,。然后访问:
[myObject profileKey];
并设置,执行
myObject.profileKey = @"my new string";
Objective-c并没有真正使用getter或setter,而是使用上面的方法。它可能是从Java过渡的艰难生活,但Objective-c要好得多。