检查字符串中是否包含表情符号

2023-11-25

我用这个得到字符串的文本大小

textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];

我遇到的唯一问题是,如果字符串仅包含表情符号,我的应用程序就会崩溃。有没有一种简单的方法来检查表情符号,或者我是否必须创建一个包含所有可能的表情符号的数组,然后使用它来检查它们?

error:

-[NSNull sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector sent to instance 0x3aa88a60


if ([tempDict valueForKeyPath:@"caption.text"]){
            NSLog(@"%@", [tempDict valueForKeyPath:@"caption"]);
            //Measure the message label box height
            textSize = [[tempDict valueForKeyPath:@"caption.text"] sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(280, CGFLOAT_MAX) lineBreakMode: NSLineBreakByWordWrapping];
            int height = 320 + 20 + textSize.height;
            [cellHeight addObject:[NSNumber numberWithInt:height]];
}

试试这个代码:

- (BOOL)stringContainsEmoji:(NSString *)string {
    __block BOOL returnValue = NO;
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:
     ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

         const unichar hs = [substring characterAtIndex:0];
         // surrogate pair
         if (0xd800 <= hs && hs <= 0xdbff) {
             if (substring.length > 1) {
                 const unichar ls = [substring characterAtIndex:1];
                 const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                 if (0x1d000 <= uc && uc <= 0x1f77f) {
                     returnValue = YES;
                 }
             }
         } else if (substring.length > 1) {
             const unichar ls = [substring characterAtIndex:1];
             if (ls == 0x20e3) {
                 returnValue = YES;
             }

         } else {
             // non surrogate
             if (0x2100 <= hs && hs <= 0x27ff) {
                 returnValue = YES;
             } else if (0x2B05 <= hs && hs <= 0x2b07) {
                 returnValue = YES;
             } else if (0x2934 <= hs && hs <= 0x2935) {
                 returnValue = YES;
             } else if (0x3297 <= hs && hs <= 0x3299) {
                 returnValue = YES;
             } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                 returnValue = YES;
             }
         }
     }];

    return returnValue;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查字符串中是否包含表情符号 的相关文章

  • 如何在 Swift 中“生成”闭包类型别名?

    为了使我的代码更易于阅读 我在 Swift 中对各种类型的闭包使用类型别名 我有以下基本的闭包集 public typealias FailureClosure error NSError gt Void public typealias
  • Swift - 我可能已经删除了 Apple Swift Packages 集合

    我对 swift 和 XCode 很陌生 昨天我正在开发一个项目 想尝试一下某人制作的自定义日期选择器 所以我转到 添加包 并粘贴 GitHub 链接并添加它 我已经在我的项目中添加了一个名为 KeychainAccess 的不同包 方式
  • iOS - UIBarButtonItem - 后退按钮标题垂直位置不调整

    我正在设置自定义字体UIBarButtonItem对象使用UIAppearance 这工作正常并正确设置字体 但是 我确实需要调整按钮标题的垂直位置以适应新字体的大小 UIBarButtonItem appearance setTitleT
  • iOS 和 Firebase 自动续订订阅

    我的问题 我很难找到一种使用 Firebase 在 iOS 中安全管理自动续订订阅的方法 购买流程 User1 purchases a subscription 使用订阅标识符更新 Firebase 上 User1 的帐户 用于解锁内容 存
  • CSS 安全区域属性在 iPhone X 上不起作用

    就我而言 我正在 iPhone X 上运行一个 Web 应用程序 我尝试在顶部添加一个填充 以使用 Webkit 的安全区域 css 属性将我的身体推到安全区域padding top constant safe area inset top
  • 如何在ios开发中从mp3文件中提取元数据

    我正在开发一个带有云存储的 ios 音乐播放器 我需要提取音乐信息 如标题 艺术家 艺术作品 我有一个名为 playit 的操作 可以播放和暂停 mp3 文件 它还应该使用与 mp3 文件关联的元数据来填充一些 UILables 和 UII
  • iOS9 Sprite 套件问题

    一切都很顺利 直到我升级到 xCode 7 和 iOS 9 我当前的项目是一个 2D 平台游戏 自从升级以来 我就陷入了我们许多人似乎都面临的精灵套件错误 错误的困扰 我的问题是 每次游戏在模拟器或设备上运行时 所有精灵的 zPositio
  • 强制本地化图像或图像资产

    正如在这个问题中 如何强制 NSLocalizedString 使用特定语言 https stackoverflow com questions 1669645 how to force nslocalizedstring to use a
  • Objective c RSA 与 OAEP 填充 sha256 之前的 ios 10

    我正在研究一种在iPhone中使用RSA加密方法的加密方法 到目前为止我可以用这种方法实现获取加密字符串 该字符串被服务器成功解密 SecKeyRef keyRef self addPublicKey pubKey SecKeyAlgori
  • Objective-C 属性和内存管理

    给出以下属性定义 property nonatomic retain MyObject foo 以下代码是否会导致内存泄漏 self foo MyObject alloc init 看起来 alloc 调用将对象上的保留计数增加到 1 然后
  • 尽早检测有问题的 XIB 视图

    我的笔尖名称有一个拼写错误 当我推向导航控制器时 它在代码中被破坏了 弄清楚它并没有花太长时间 但我认为最好尽早断言格式良好 以便更容易弄清楚 问题是它不是零 它只是无法从笔尖正确地形成自己 在 initWithNib 之后是否有更好的断言
  • ios GPUImage,小尺寸图像处理效果不好?

    我正在尝试为 OCR 准备图像 我使用 GPUImage 来完成 代码工作正常 直到我裁剪图像 裁剪后我得到了糟糕的结果 作物面积 https www dropbox com s e3mlp25sl6m55yk IMG 0709 PNG h
  • iOS UITableView:使用 CAGradientLayer 将背景颜色指定为渐变

    我刚刚开始使用 Xcode 4 3 中的主从视图模板 我试图更改主视图的背景颜色并将其设置为颜色渐变 这是我尝试过的 Colors m import Colors h implementation Colors UIColor naviga
  • AST 文件格式错误或损坏

    我有一个问题 我不知道为什么会发生这种情况 但很可能是因为我错误地按了 移动到垃圾箱 到某些系统框架 我收到一条错误消息 AST 文件格式错误或损坏 找不到 AST 文件引用的文件 Users username myProject Quar
  • 从应用程序打开/关闭 iPhone 的 Wifi

    我需要打开或关闭 iPhone 中的 wifi 有什么方法可以做到吗 还是被禁止了 私有框架 所有使用公共 SDK 编写的应用程序都经过沙箱处理 他们只能访问苹果认为可以在该沙箱中使用的属性和数据 恐怕 Wi fi 不在列表中 请看一下这个
  • Xcode 7.2 无法连接到装有 iOS 9.2 的 iPhone

    出于开发目的 我已经在我的 iPhone 5s 上安装了 iOS 9 2 beta 当然 我还安装了Xcode 7 2 beta 当我想在设备上运行应用程序扩展 键盘 时 该应用程序会正确构建 安装在 iPhone 上并启动 然而 然后我在
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • iOS 版 Google 地图 sdk 中折线的轮廓

    我的要求是在地图上显示一条绿色折线 但当地图切换到卫星视图时 绿色折线变得不清楚 我无法改变折线的颜色 因此 为了将折线与背景 地图的卫星视图 区分开来 我需要为折线绘制白色轮廓 我浏览了 GMSPolyline 类的文档 但找不到任何可以
  • Xcode 中的 Prefix.pch 文件是什么?

    许多开发人员正在向其中添加各种方便的宏Prefix pch 但我的问题是那是什么Prefix pch file 如果我删除它Prefix pch来自我的文件Xcode 那么我的应用程序会运行吗 或者会显示什么错误吗 或者它会在构建过程中崩溃
  • 如何在 Swift 中将所有 iOS 设备的标签水平居中

    我不知道如何使标签在图像视图中水平居中 标签说 You ve been here What would you rate us 我想要What would you rate us属于 You ve been here 我试图完成此操作的方法

随机推荐

  • 无法在“ApplicationUser”上配置密钥,因为它是派生类型,但 ApplicationUser 上没有密钥配置

    我正在尝试使用 ApplicationUser 自定义 IdentityUser 我按照微软文章中的步骤操作 但是当我运行应用程序时 我在方法上收到此错误base OnModelCreating modelBuilder System In
  • ES6 对象中的方法:使用箭头函数

    在 ES6 中 这两个都是合法的 var chopper owner Zed getOwner function return this owner 并且 作为简写 var chopper owner Zed getOwner return
  • 如何使用 mongo Java 驱动程序 3.0+ 检查文档是否存在于集合中

    使用新的3 0 java驱动程序来自 mongo 检查文档是否存在于集合中的最佳方法是什么 我看过here并尝试做类似的事情 我只做到了这一点 FindIterable
  • 如何仅删除字符串中的 html 标签?

    我已经编写了删除 HTML 标签的代码 但它也删除了a
  • 除了日志记录和事务管理之外,AOP 还有哪些实际应用?

    我理解这些原理 但我很难看出实际应用在哪些地方 请赐教 询问任何支持人员 日志记录是notAOP的一个很好的应用 他们不关心应用程序内部调用什么方法 他们关心应用程序正在执行的重要操作 并需要以他们理解的方式呈现该信息 要创建像样的日志 您
  • 3DSv2 Sagepay 直接集成基础知识

    协议 4 00 的文档可能会更有帮助 对于每个努力让 3DSV2 工作的人来说 我希望任何已经设法让 3DSV2 工作的人能够详细阐述基础知识 我将根据我的理解总结流程 请大家帮忙纠正必要的地方并添加任何问题 例如从 VPSTx Id 中删
  • 如何在 pyspark pandas_udf 中记录/打印消息?

    我已经测试过logger and print无法打印消息pandas udf 无论是在集群模式还是客户端模式 测试代码 import sys import numpy as np import pandas as pd from pyspa
  • 具有任意类型值的 C++ 关联数组

    在 C 中为每个键创建具有任意值类型的关联数组的最佳方法是什么 目前我的计划是创建一个 值 类 其中包含我期望类型的成员变量 例如 class Value int iValue Value int v iValue v std string
  • 如何禁用底部的反应本机警告消息

    我正在开发一个react native IOS应用程序 这个应用程序有时会引发一条警告消息 setState 只能更新已安装或正在安装的组件 我明白该消息的含义 这是由于长时间的AJAX调用造成的 考虑到这个警告不会对APP造成任何严重的问
  • HTTP 错误 500.19 - 内部服务器错误?

    我正在将一个非常基本的站点从 Win 2003 迁移到 Win 2008 R2 该网站出现下面列出的错误 我该如何诊断这个问题 我在这两台服务器之间移动了许多其他站点 这是唯一收到此错误的站点 我看过有关此问题的其他帖子 但没有一个列出适合
  • 使用 Nhibernate 过滤通过聚合根返回的子集合

    我正在尝试在使用 Nhibernate 加载聚合根时过滤它的子集合 向客户加载所有已发货的订单 这可能吗 那么 您可以公开在地图中过滤的属性 如下所示
  • 如何在 processStartInfo 中传递多个参数?

    我想运行一些cmd命令来自c 代码 我关注了一些博客和教程并得到了答案 但我有点困惑 即我应该如何传递多个参数 我使用以下代码 System Diagnostics Process process new System Diagnostic
  • Python美汤表单输入解析

    我的目标是获取所有输入名称和值的列表 将它们配对并提交表格 名称和值是随机的 from bs4 import BeautifulSoup parsing html
  • 可以设置Python对象的任何属性[重复]

    这个问题在这里已经有答案了 例如 这段代码是Python a object a b 3 throws AttributeError object object has no attribute b 但是 这段代码 class c objec
  • 将 sonar.test.exclusions 与 Sonarqube 6.3 一起使用

    我目前正在评估 Sonarqube 6 3 对我当前的 5 5 实例进行了重大升级 并且在尝试找出该功能的过程中我感到很困惑声纳 测试 排除环境 有这样一个问题 Sonar Maven 插件 如何排除测试源目录 这似乎表明它用于从分析中排除
  • Python 中的重复数据删除

    在浏览 Python 中用于重复数据删除的 Dedupe 库的示例时 我发现它创建了一个集群 ID输出文件中的列 根据文档 该列指示哪些记录相互引用 虽然我无法找出两者之间的任何关系集群 ID这对查找重复记录有什么帮助 如果有人对此有见解
  • Java线程阻塞

    我的java环境有问题 我运行 Solr 1 3 搜索引擎 已有一年多了 突然间我遇到了很多麻烦 我所有的线程池 250 每天都会被随机阻塞一两次 我没有对 solr 应用程序或 tomcat 服务器进行任何更改 我正在运行 tomcat
  • 测试两个 __m128i 变量之间的相等性

    如果我想在两个之间进行按位相等测试 m128i变量 我是否需要使用 SSE 指令或者我可以使用 如果不是 我应该使用哪条SSE指令 虽然使用 mm movemask epi8是一种解决方案 如果您有一个带有 SSE4 1 的处理器 我认为更
  • 获取点击事件中按钮的 ID/名称。网络

    我在 VB NET 中有一个事件可以同时处理多个按钮单击 我需要知道选择的哪个按钮启动了事件 有什么想法如何做到这一点 我的代码如下 Private Sub Answer Click ByVal sender As System Objec
  • 检查字符串中是否包含表情符号

    我用这个得到字符串的文本大小 textSize tempDict valueForKeyPath caption text sizeWithFont UIFont systemFontOfSize 12 constrainedToSize