gpt4 book ai didi

objective-c - BOOL 的 NSFormatter

转载 作者:行者123 更新时间:2023-12-03 17:04:58 28 4
gpt4 key购买 nike

我已经使用绑定(bind)到数组 Controller 的表设置了简单的 Xcode 项目。如果数组 Controller 充满了具有字符串属性的实体,它就可以正常工作。但是,我想将属性更改为 BOOL,并让表根据 BOOL 显示字符串“true”或“false”。

我已经重写了 NSFormatter 中的以下两个方法:

-(NSString*) stringForObjectValue:(id)object {
//what is the object?
NSLog(@"object is: %@", object);
if(![object isKindOfClass: [ NSString class ] ] ) {
return nil;
}

//i'm tired....just output hello in the table!!
NSString *returnStr = [[NSString alloc] initWithFormat:@"hello"];
return returnStr;
}

-(BOOL)getObjectValue: (id*)object forString:string errorDescription:(NSString**)error {
if( object ) {
return YES;
}
return NO;
}

因此,如果属性是字符串,则表中将填充“hello”,但是如果我将其切换为 bool 值,则表中将填充大量空格。

我不知道这是否有帮助,但在我输出对象的行上,如果属性是字符串,则输出 __NSCFString;如果将属性切换为 bool 值,则输出“文本单元格”。这是我不明白的另一件事。

最佳答案

好吧,从代码中并不是 100% 清楚你想要做什么,但首先要注意的是 - BOOL 不是一个对象,它基本上是 0 或 1,所以要将 BOOL 值放入数组中,你需要可能最好使用 NSNumber:

NSNumber *boolValue = [NSNumber numberWithBool:YES];

并将它们放入您的数组中。现在你想改变你的方法:

-(NSString*) stringForObjectValue:(id)object {
NSNumber *number = (NSNumber *)object;
if ([number boolValue] == YES)
return @"true";
else
return @"false";
}

这里有一些事情 - 例如,如果可以的话,您希望避免传递 id 引用(如果您知道 NSArray 中的所有对象都是 NSNumber,你不需要)。

关于objective-c - BOOL 的 NSFormatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588536/

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