gpt4 book ai didi

cocoa - NSFormatter问题: not getting called for the empty string

转载 作者:行者123 更新时间:2023-12-03 18:02:55 26 4
gpt4 key购买 nike

我为我的(只读)表列创建了一个自定义格式化程序。它看起来像这样:

- (NSString *)stringForObjectValue:(id)anObject
{
NSAssert([anObject isKindOfClass:[NSString class]] && anObject != nil,
@"invalid object");

if ([anObject isEqualToString:@""])
return @"EMPTY";
else
return [anObject stringByAppendingString:@"++"];
}

非常简单。相应的对象只是字符串,因此它是一个字符串到字符串的格式化程序。返回所有非空字符串对象并附加 @"++"。空字符串对象应转换为 @"EMPTY" 字符串。

@"++" 可以很好地附加到非空字符串。

问题是,@"EMPTY" 永远不会显示!当底层对象是空字符串时,Cocoa 永远不会调用我的格式化程序。相应的行一直为空,而不是显示我请求的 @"EMPTY"

有什么想法吗?

最佳答案

我已经尝试过你的代码。这对我有用。这是代码(稍作修改):

对于非空字符串:

#import "untitled.h"


@implementation untitled

-(void) theMain
{
NSLog(@"str: %@", [self callMe]);

}


-(NSString *)callMe
{
NSString *anObject = [[NSString alloc] initWithString:@"s"];

if ([anObject isEqualToString:@""])
return @"EMPTY";
else
return [anObject stringByAppendingString:@"++"];

}
@end

结果:

2011-01-04 09:23:10.991 string[410:80f] str: s++

现在尝试空字符串:

#import "untitled.h"


@implementation untitled

-(void) theMain
{
NSLog(@"str: %@", [self callMe]);

}


-(NSString *)callMe
{
NSString *anObject = [[NSString alloc] initWithString:@""];

if ([anObject isEqualToString:@""])
return @"EMPTY";
else
return [anObject stringByAppendingString:@"++"];

}
@end

结果:

2011-01-04 09:25:42.379 string[441:80f] str: EMPTY

所以你的代码确实有效。也许您可以向我们展示代码的其他部分(也许是调用您的函数的部分),以便我们能够真正发现问题。正如发布的那样,您的代码确实有效。

关于cocoa - NSFormatter问题: not getting called for the empty string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589743/

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