首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于BOOL的NSFormatter

用于BOOL的NSFormatter
EN

Stack Overflow用户
提问于 2012-07-21 08:33:05
回答 1查看 259关注 0票数 1

我已经使用绑定到数组控制器的表设置了我的简单Xcode项目。如果数组控制器中充满了具有字符串属性的实体,那么它就可以很好地工作。但是,我希望将属性更改为BOOL,并使表根据BOOL显示字符串"true“或"false”。

我已经覆盖了NSFormatter中的以下两个方法:

代码语言:javascript
复制
-(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“,但是如果我将其切换为布尔值,则该表将填充大量空格。

我不知道这是否有帮助,但是在我输出对象的那一行上,如果属性是字符串,则输出__NSCFString,如果将属性切换为布尔值,则输出"Text Cell“。这是另一件我不明白的事情。

EN

回答 1

Stack Overflow用户

发布于 2012-07-21 08:42:05

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

代码语言:javascript
复制
NSNumber *boolValue = [NSNumber numberWithBool:YES];

并将这些放入您的数组中。现在您想要更改您的方法:

代码语言:javascript
复制
-(NSString*) stringForObjectValue:(id)object {
   NSNumber *number = (NSNumber *)object;
   if ([number boolValue] == YES) 
       return @"true";
   else
       return @"false";
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11588536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档