所以我想在我的功能之外访问并显示格式化的日期。对于日期格式,我使用的NSDateFormatter
工作正常..
我的功能(didFinishUpdatesSuccessfully
)执行一些操作,如果成功显示UIAlertView
,其中包含格式化日期。一切正常......
- (void) didFinishUpdatesSuccessfully {
//--- Create formatted date
NSDate *currDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd/MM/YYYY - hh:mm:ss a"];
NSString *dateString = [dateFormatter stringFromDate:currDate]; // dateString contains the current date as a string
[dateFormatter release];
//--- UIAlertView
NSString *title = @"The update has been performed!";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: title
message: dateString
delegate: nil
cancelButtonTitle: [FileUtils appResourceForKey:@"UPDATE_GENERAL_BUTTON_TITLE_OK"]
otherButtonTitles: nil];
[alert show];
[alert release];
//--- create new string
// NSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];
}
我现在想将dateString
的值写入全局NSString
或NSMutableString
,然后在代码中的其他位置访问它,例如另一个功能等。
我考虑像这样创建一个NSMutableString
:
NSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];
并在其他地方访问lastUpdated
,但此功能lastUpdated
的空白是空的...你能帮帮忙吗?干杯
答案 0 :(得分:0)
NSMutableString* lastUpdated = [NSMutableString stringWithFormat:@"%@",dateString];
如果这样做,则表示名为lastUpdated
的局部变量。即使有另一个具有相同名称的全局变量,只要它在范围内(函数的生命周期),这个本地变量就会隐藏全局变量。
要使这项工作,你需要在任何函数或方法之外的某个地方声明一个全局lastUpdated
,可能在.m文件的顶部附近:
NSMutableString *lastUpdated;
然后,您可以从.m文件中的任何位置访问该变量。如果要在其他.m文件中访问它,您需要在相应的标题(.h)文件中添加extern声明:
extern NSMutableString *lastUpdated;
使用该声明,您可以在包含该头文件的任何文件中使用lastUpdated
。
要了解两件事:
这是基本的C东西,所以如果看起来不熟悉,你应该检查C的范围规则。知道全局变量,静态变量,局部变量,实例变量之间的区别(好吧,普通的老) C没有那些)和参数。
全局变量太可怕了。不要相信任何告诉你的人。我提供上面的建议来帮助解决您的问题,但更好的解决方案是弄清楚如何重构代码,以便您可以避免需要全局变量。 (IMO单身人士也不是答案。用于访问全球数据的单身人士不仅仅是花哨的全球变数。)
答案 1 :(得分:0)
你应该保留字符串,如。
NSMutableString* lastUpdated;
lastUpdated = [[NSMutableString stringWithFormat:@"%@",dateString] retain];
现在尝试在外面访问。