gpt4 book ai didi

ios - "If"语句之谜

转载 作者:行者123 更新时间:2023-11-28 18:03:21 25 4
gpt4 key购买 nike

我有一个 if 例程,它将一个值与其他两个值进行比较(使用 || 运算符),如果语句的计算结果为 YES,则值 firstActivity.stopTime 应该从 null 更改为当前时间 [NSDate date]

然而,它似乎评估为 NO,导致没有变化,即使我的 NSLog 读数(和我自己的观察)似乎确认它必须评估为 YES

代码如下:

-(void) compareActivity
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
TimedActivity *firstActivity = [TimedActivity MR_findFirstOrderedByAttribute:@"startTime" ascending:NO];

NSLog(@"1 Currently timed activity is %@",firstActivity.name);
NSLog(@"2 thisSpec.activityOfInterest is %@",self.thisSpec.activityOfInterest);
NSLog(@"3 Currently timed activity stopTime is %@",firstActivity.stopTime);
NSLog(@"4 thisSpec.benchmarkActivity is %@",self.thisSpec.benchmarkActivity);

if (firstActivity.name == self.thisSpec.activityOfInterest || firstActivity.name == self.thisSpec.benchmarkActivity)
{
firstActivity.stopTime = [NSDate date];
[localContext MR_saveToPersistentStoreAndWait];
NSLog(@"5 Currently timed activity stopTime is %@",firstActivity.stopTime);
}
NSLog(@"6 Currently timed activity stopTime is %@",firstActivity.stopTime);
}

这是控制台的读数:

2014-04-28 22:15:06.588 WMDGx[5683:a0b] 1 Currently timed activity is Test 1
2014-04-28 22:15:06.588 WMDGx[5683:a0b] 2 thisSpec.activityOfInterest is Test 1
2014-04-28 22:15:06.589 WMDGx[5683:a0b] 3 Currently timed activity stopTime is (null)
2014-04-28 22:15:06.589 WMDGx[5683:a0b] 4 thisSpec.benchmarkActivity is Test 2
2014-04-28 22:15:06.589 WMDGx[5683:a0b] 6 Currently timed activity stopTime is (null)

有什么想法或建议吗?

谢谢!

更新:

我这样更新了我的代码:

if ([firstActivity.name isEqualToString:self.thisSpec.activityOfInterest] || [firstActivity.name isEqualToString:self.thisSpec.benchmarkActivity])
{
firstActivity.stopTime = [NSDate date];
[localContext MR_saveToPersistentStoreAndWait];
NSLog(@"5 Currently timed activity stopTime is %@",firstActivity.stopTime);
}

现在它完美运行了!有趣的是,我以前曾经遇到过同样的问题,并且实际上尝试过更改代码,但这次我显然做错了什么,导致我认为这是错误的方法。

非常感谢!

最佳答案

你不能使用==来比较对象指针,你需要使用isEqual:比较对象

[firstActivity.name isEqual: self.thisSpec.activityOfInterest] || [firstActivity.name isEqual: self.thisSpec.benchmarkActivity]

如果它们是NSString,你可以使用isEqualToString:

关于ios - "If"语句之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23356339/

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