gpt4 book ai didi

ios - 在 viewController 第一次出现时运行一​​段代码

转载 作者:行者123 更新时间:2023-11-28 22:11:41 26 4
gpt4 key购买 nike

我正在使用解析在我的 iOS 应用程序中存储和检索数据。我的代码如下。

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

if (!error) {

for (PFObject *item in objects) {

self.postPlace.text = [item objectForKey:@"place"];
}
}

else {
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];

但是,乍一看,我希望以下代码是:

self.postPlace.text =  nil;

然后剩下的时间:

self.postPlace.text =  [item objectForKey:@"place"];

我该如何实现?我查看了 viewDidLoad 和 viewDidAppear,但我有点卡住了。

最佳答案

由于我已经与其他两个(在撰写本文时)答案的作者就他们建议使用 static 局部变量进行了长时间的讨论,所以我将提供我自己的答案,我认为这是一个更好的解决方案。

使用 static 局部变量来跟踪某件事是否已经完成,将把类的实例数限制为一个,因为 只能有一个实例code>static 每个进程的局部变量。这对于 View Controller 来说可能不是问题,因为它可能只需要一个实例,但是通常情况下会使用多个 View Controller 实例,并且使用 static 局部变量会在开发的后期导致难以发现的错误,尤其是因为它是如此不显眼

我的建议是使用一个实例变量来跟踪你的行为,允许类的多个实例,并让你很明显地知道你正在这样做,因为它出现在类 @interface 中,大声说出它的目的(如果命名正确的话)。

因此:

@interface MyViewController : UIViewController
{
BOOL _haveSetPostPlaceNil;
}

并且在代码中(没有必要将其初始化为NO,除非你真的觉得有必要),使用:

for (PFObject *item in objects) {
if (!_haveSetPostPlaceNil) {
self.postPlace.text = nil;
_haveSetPostPlaceNil = YES;
} else {
self.postPlace.text = [item objectForKey:@"place"];
}
}

关于ios - 在 viewController 第一次出现时运行一​​段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775242/

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