在 Objective-C 中比较字符串和数组

2023-12-29

这是一个非常基本的问题,我相信您能够很快回答。请不要嘲笑我的无知。

我有一个字符串,我想将其与字符串数组进行比较。仅当字符串不是数组的一部分时,我才想执行操作。我尝试了以下代码,但不起作用。我确实明白为什么,但我就是想不出正确的方法。

请帮助我摆脱痛苦。

提前致谢

沙克连

-(void) findRedundant: (NSString *) aString {
#define ALPHA_ARRAY [NSArray arrayWithObjects: @"A", @"B", @"C", nil]   
    NSUInteger f;
    for (f = 0; f < [ALPHA_ARRAY count]; f++) 
    {
        NSString * stringFromArray = [ALPHA_ARRAY objectAtIndex:f];
        if ([aString isEqualToString:stringFromArray]) {
            // do nothing

        } else {
            //do something
        }

    }

}



[self findRedundant:@"D"];

您的代码看起来工作正常。它的代码很糟糕,但工作正常,对于任何匹配都会调用 // do Nothing 部分,而对于数组中的每个不匹配都会调用 // do some 部分。我怀疑问题是您期望 // do Nothing 部分在没有匹配的情况下执行一次,而 // do Something 部分在有任何匹配的情况下执行一次,但事实并非如此。您可能想要:

-(void) findRedundant: (NSString *) aString {
#define ALPHA_ARRAY [NSArray arrayWithObjects: @"A", @"B", @"C", nil]
    BOOL found = NO;
    NSUInteger f;
    for (f = 0; f < [ALPHA_ARRAY count]; f++) {
        NSString * stringFromArray = [ALPHA_ARRAY objectAtIndex:f];
        if ([aString isEqualToString:stringFromArray]) {
            found = YES;
            break;
        }
    }
    if ( found ) {
        // do found
    } else {
        // do not found
    }
}

另外,您显然不了解宏以及何时应该和不应该使用它们(通常,您不应该使用它们,除了极少数例外)。该宏以文本方式替换到您的代码中。这意味着数组创建和初始化正在进行每次你使用ALPHA_ARRAY。这很糟糕。

基本上,在您对自己正在做的事情有更深入的了解之前,永远不要再次使用#define(常量除外)。在这种情况下,您将按照 taebot 的描述创建数组:

NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];

接下来,如果您正在为现代平台(10.5 或 iPhone)进行开发,则可以使用快速枚举,它更容易阅读,也更清晰:

-(void) findRedundant: (NSString *) aString {
    NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
    BOOL found = NO;
    for ( NSString* stringFromArray in alphaArray ) {
        if ([aString isEqualToString:stringFromArray]) {
            found = YES;
            break;
        }
    }
    if ( found ) {
        // do found
    } else {
        // do not found
    }
}

最后,你应该通读 NSArray 和 NSString 的文档,看看你可以免费做什么,然后你会发现像 KiwiBastard 指出的 containsObject 这样的方法,你可以将你的例程重写为:

-(void) findRedundant: (NSString *) aString {
    NSArray* alphaArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
    if ( [alphaArray containsObject: aString] ) {
        // do found
    } else {
        // do not found
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Objective-C 中比较字符串和数组 的相关文章

  • 使用远程图像创建 MSSticker

    我正在尝试找出使用网络上托管的图像创建 MSStickers 的方法 我可以使用本地图像创建 MSStickers 例如 NSString imagePath NSBundle mainBundle pathForResource imag
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • NSCFData isRessized 崩溃?

    我目前在控制台中收到此崩溃日志 2011 08 23 19 18 40 064 App 1697 707 NSCFData isResizable unrecognized selector sent to instance 0x11f1c
  • 如何构建 if 语句并与各种值进行比较?

    我该怎么写这个if以更好的方式声明条件 if data in 8 downto 1 x 70 or data in 8 downto 1 x 69 or data in 8 downto 1 x 72 or data in 8 downto
  • 为什么performSegueWithIdentifier在viewDidLoad中不起作用?

    我试图在视图控制器上调用 viewDidLoad 后立即触发故事板转场 Segue 附加了一个标识符 当从链接到按钮或其他控件的方法内部调用时 它可以正常工作 但它在 viewDidLoad 内部不起作用 它只是默默地失败了 viewDid
  • 如何在iOS中处理1到3个手指的滑动手势

    我使用以下代码来处理代码中的 1 根手指滑动 UISwipeGestureRecognizer swipe UISwipeGestureRecognizer alloc initWithTarget self action selector
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • NSUInteger 的奇怪行为 - 无法正确转换为浮动

    这是我的情况 这让我发疯 我有一个计数值为 517 的 NSMutableArray 我有一个双精度值 它是我的乘数 double multiplier 0 1223 double result myArray count multipli
  • 生成具有固定数字长度的随机数?

    我正在生成随机数 int randomID arc4random 3000 但我想生成至少 4 位数字的随机数 如 1000 2400 1122 我想知道 Objective C 的代码 请尝试 生成数字 1000 9999 int ran
  • 在Python中使用.replace替换多个字符[重复]

    这个问题在这里已经有答案了 所以我试图制作一个简单的程序 将一个短语解码为不同的短语 这是我现在的代码 def mRNA decode phrase newphrase phrase replace A U phrase replace T
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • 调整 UIImage 的大小而不将其完全加载到内存中?

    我正在开发一个应用程序 用户可以在其中尝试加载非常非常大的图像 这些图像首先在表格视图中显示为缩略图 我的原始代码会在大图像上崩溃 因此我重写它以首先将图像直接下载到磁盘 是否有一种已知的方法可以调整磁盘上图像的大小 而无需通过以下方式将其
  • watchOS 错误:控制器接口描述中的未知属性

    我将 WKInterfacePicker 添加到情节提要中 并将其连接到界面控制器中的 IBOutlet 运行应用程序时 它在控制台中显示一条错误消息 控制器的接口描述 watchPicker 中的未知属性 Code interface I
  • UITableViewCell显示多种字体

    我想在 uitableviewcell 中以类似于 iPhone 地址簿的不同字体显示两个单词 例如 约翰Buchanan 您应该使用两个 UILable 或者您可以使用OH属性标签 https github com AliSoftware
  • 为什么这两种不同的构造数组的方式会产生不同的行为?

    当我以两种不同的方式构造一个 2 元素数组时 例如a and b 当我将一个元素添加到内部数组之一时 我得到两个不同的结果 这也会发生在append 根据构建每个之后的输出 我希望它们完全相同 julia gt a 2 element Ar
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • Repa 数组上的并行 mapM

    在我最近的work https github com bgamari mixture model with Gibbs sampling 我一直在充分利用RVar http hackage haskell org packages arch
  • 对具有混合类型值的数组进行数字排序

    我有一个像这样的混合数组 fruits array lemon Lemon 20 banana apple 121 40 50 然后申请sort 其功能如下 sort fruits SORT NUMERIC foreach fruits a

随机推荐

  • 如何判断我是处于编辑状态还是创建状态?蛋糕PHP

    我有一个模型 需要在保存之前进行一些处理 或在某些情况下进行编辑 但通常在简单编辑时不需要 事实上 如果我对大多数编辑进行处理 结果字段将是错误的 现在 我正在模型的 beforeSave 回调中工作 如何判断我是来自编辑还是添加 弗兰克
  • 处理大型 DOM 元素时加速 jQuery empty() 或 ReplaceWith() 函数

    首先 我为没有提供代码片段表示歉意 我正在从事的项目是专有的 恐怕我无法展示exactly我正在做什么 不过 我会尽力进行描述 以下是我的应用程序中发生的情况的细分 用户单击按钮 服务器以数据表的形式检索图像列表 Each row in t
  • 如何让某人的个人资料图片显示给他们?

    我如何才能将某人的个人资料图片显示给我 我已经获得使用用户图片等的权限 我只是不知道如何使用他们的个人资料图片并将其显示给他们 任何帮助都是极好的 调用Graph API http graph facebook com id picture
  • 保留文本区域中的换行符

    我有一个带有文本区域的表单 我想在输出内容时保留用户输入的换行符 例如 如果我在 textarea 中写入 这里有一句话 这是另一个 这里还有一个 这是一个新段落 这是一个新句子 这是另一个 我想要相同的输出not 这里有一句话 这是另一个
  • 它说 TypeError: document.getElementById(...) 为 null [重复]

    这个问题在这里已经有答案了 虽然我向 getElementById 推送了一个参数 但我想知道这个 is null 错误来自哪里 TypeError document getElementById is null Break On This
  • gcc 编译器无法识别 -fno-plt 选项

    我正在尝试使用 Amazon Linux AMI 在 Amazon EC2 实例上编译 QuantLib Python SWIG 绑定 我已成功编译 QuantLib 本身 但是 当尝试编译 anaconda python swig 绑定时
  • 如何从java调用c++功能

    我有一个主要是 GUI 的 Java 程序 它显示从 C 命令行工具写入 xml 文件的数据 现在我想在java程序中添加一个按钮来刷新数据 这意味着我的程序必须调用 C 功能 通过系统调用从 java 调用程序的最佳方法是 c 程序将为
  • 使用 TRESTRequest 时客户端未指定证书

    使用 SSL URL 调用我们的内部服务器之一时 TRESTClient 和 TRESTRequest 给出错误 首先来自异常类 ENetHTTPCertificateException 然后来自 ERESTException 并显示消息
  • 可变高度的 CSS 浮动 Div [重复]

    这个问题在这里已经有答案了 我有无限数量的 100px 宽度的 div 可以放入 250px 宽度的父级中 无论高度如何 我都需要将 div 按行显示 如图所示 我已经尝试解决这个问题 但 div 高度似乎把它搞砸了 我非常感谢你的帮助 谢
  • 用元组定义函数

    如何定义一个接受所有元组 1 到 22 作为参数的函数 我有以下想法 def foo v Tuple foo 1 2 foo 1 2 3 EDIT 回答评论 我实际上正在尝试创建一个张量类 它是一组值和一组索引 索引可以是协变和 或逆变的
  • 使用 LINQ 合并 2 个列表并对多个属性求和

    我有一个包含以下属性的类 public class SomeClass public Int32 ObjectId1 get set public Int32 ObjectId2 get set public Int32 ActiveThi
  • 系统类加载器是否会加载类路径中的所有类,即使它们实际上并未使用?

    我正在使用 JDK 1 6 来运行一个小型应用程序 然而 我设置了一个非常庞大的类路径 其中包含很多类 当我运行应用程序时 类加载器中的所有类是否都会被加载 即使它们实际上并未在我的应用程序中使用 如果不是 如何强制类加载器这样做 如果是
  • 提交消息中的“CL”是什么意思?它代表什么?

    来自 Angular js 更改日志 在此 CL 之后 ng trim 不再影响 input type password 并且永远不会修剪密码值 这是来自其中一条提交消息 因此大概意味着补丁 它代表什么 更改日志 它的意思是更改列表 创建变
  • 使用 CloudKit 时出现“无法发送有效签名”错误

    任何人都知道可能导致此错误的原因 该错误在下面的查询块中返回
  • 如何使用argparse打开文件?

    我想使用打开文件进行阅读argparse 在 cmd 中它必须如下所示 my program py filepath 这是我的尝试 parser argparse ArgumentParser parser add argument fil
  • C# .net MVC,设置 Google 应用程序凭据 JSON 文件的路径

    我刚刚让这个 Google 示例项目在我的 VS2015 上运行 但是 当我发布到 IIS 并托管它后 当我打开链接时 网页不断显示此消息 如图所示 我将密钥添加到了 web config 中 但仍然不起作用 只是想知道以前是否有人这样做过
  • Facebook Graph API 读取关注者计数

    使用 Facebook Graph API 或其他方式 当前是否有可用的方法来获取用户的关注者数量 您可能认为这将是一个简单的可读度量字段user https developers facebook com docs graph api r
  • Grails ehcache 插件 - 同一 VM 中已存在另一个未命名的 CacheManager

    我使用 ehcache 作为二级缓存来运行 Grails 应用程序 并且它可以工作 我安装了ehcache插件 cache插件 然后就没有了 我尝试了互联网上几乎所有的解决方案 但没有找到我一直得到的解决方案Another unnamed
  • 如何将 Flutter 应用主题默认设置为深色?

    我在 flutter 中创建了一个简单的登录 UI 但我不知道如何使应用程序的整体主题变暗 我的意思是 将来 如果我向应用程序添加更多功能 它应该全部采用深色主题 有什么办法可以做到这一点吗 我使用了一个单独的 dart 文件 login
  • 在 Objective-C 中比较字符串和数组

    这是一个非常基本的问题 我相信您能够很快回答 请不要嘲笑我的无知 我有一个字符串 我想将其与字符串数组进行比较 仅当字符串不是数组的一部分时 我才想执行操作 我尝试了以下代码 但不起作用 我确实明白为什么 但我就是想不出正确的方法 请帮助我