无法识别的选择器发送到 NSKeyedUnarchiver 实例

2023-11-29

无法弄清楚为什么会不断抛出此错误:

-[__NSCFString bytes]: unrecognized selector sent to instance 0xc3eb200

对于这段代码:

- (void)parser:(SBJsonStreamParser *)parser foundObject:(NSDictionary *)dict {
empty = NO;

for (NSDictionary *valueDictionary in [dict objectForKey:@"Contacts"]) {
    if ([[valueDictionary objectForKey:@"Empty"] isEqualToString:@"YES"]){
        empty = YES;
        contactsArray = [[NSMutableArray alloc] init];
    }else{
        Thecontacts = [valueDictionary objectForKey:@"Contacts"];
    }
    dataRepresentingSavedArray = Thecontacts;
    if (dataRepresentingSavedArray != nil) {
   **Causes Error->**  NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
    contactsArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
    }
}
    [table reloadData];
}

[valueDictionary objectForKey:@"Contacts"] 的值为

<62706c69 73743030 d4010203 0405082b 2c542474 6f705824 6f626a65 63747358 24766572 73696f6e 59246172 63686976 6572d106 0754726f 6f748001 ab090a11 1718191a 2228292a 55246e75 6c6cd20b 0c0d0e56 24636c61 73735a4e 532e6f62 6a656374 738006a2 0f108002 8007d20b 0c0d1380 06a31415 16800380 0480055b 416e6472 65772044 756e6e5f 1018616e 64726577 4064756e 6e2d6361 72616261 6c692e63 6f6d5661 63636570 74d21b1c 1d215824 636c6173 7365735a 24636c61 73736e61 6d65a31e 1f205e4e 534d7574 61626c65 41727261 79574e53 41727261 79584e53 4f626a65 63745e4e 534d7574 61626c65 41727261 79d20b0c 0d248006 a3252627 80088009 800a5e4a 6f686e20 4170706c 65736565 645f1016 4a6f686e 2d417070 6c657365 6564406d 61632e63 6f6d5561 6c657274 12000186 a05f100f 4e534b65 79656441 72636869 76657200 08001100 16001f00 28003200 35003a00 3c004800 4e005300 5a006500 67006a00 6c006e00 73007500 79007b00 7d007f00 8b00a600 ad00b200 bb00c600 ca00d900 e100ea00 f900fe01 00010401 06010801 0a011901 32013801 3d000000 00000002 01000000 00000000 2d000000 00000000 00000000 00000001 4f>

我一直在玩代码并且接近最终解决方案,这很令人讨厌,但在我找到解决方法之前它会起作用。所以 oldSavedArray 打印数组,但是当我去打印这个时

 contactsArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];

我收到了。

   [__NSCFString count]: unrecognized selector sent to instance 0xabab970

oldSavedArray 的输出是

( ( “约翰·阿普尔西德”, ”[电子邮件受保护]“, 警报 ), ( “安德鲁·邓恩”, ”[电子邮件受保护]“, 接受 ) )

 url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[AsyncURLConnection request:url completeBlock:^(NSData *data) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        dispatch_async(dispatch_get_main_queue(), ^{
            NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            if (![myString isEqualToString:@"0"]) {
            [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:myString] forKey:@"savedArray"];
            NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"savedArray"]];
                contactsArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
                [table reloadData];
            }else{
                contactsArray = [[NSMutableArray alloc] init];
            }

        });
    });
} errorBlock:^(NSError *errorss) {

}];

错误消息表明

Thecontacts = [valueDictionary objectForKey:@"Contacts"];

返回一个NSString对象,而不是NSData对象如您所料。我假设你创建了 JSON 使用类似的东西

[NSString stringWithFormat:@"%@", Contacts]

它使用description的方法NSData并返回一个字符串,例如



<62706c69 73743030 d4010203 0405082b ... >
  

或者也许 SBJson 隐含地这样做了。你could解析该字符串并转换 它回到NSData。但这将是一种脆弱的方法,因为实际description的格式NSData没有记录,并且将来可能会发生变化。

请注意,JSON 不知道“原始二进制数据”,只知道字典、数组、字符串和数字。你应该转换NSData to NSString(使用公开可用的之一 Base64 转换器)并将 Base64 字符串存储在 JSON 中。

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

无法识别的选择器发送到 NSKeyedUnarchiver 实例 的相关文章

  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 我可以在 NS_SWIFT_NAME 中使用保留关键字吗?

    我正在尝试使 Objective C 委托协议更漂亮以便在 Swift 中使用 但我在弄清楚如何使用时遇到了一些麻烦NS SWIFT NAME 是否可以使用NS SWIFT NAME指定 Swift 名称中与 Objective C 关键字
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • Objective-C 实例变量?

    我确信我在这里的困惑只是因为陷入 Java 思维方式 并且不理解 Obj C 在这种情况下有何不同 在Java中 我可以在类中声明一个变量 就像这样 并且每个instance该类的 将会有它自己的 MyClass String myVar
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • 如何向 JSQMessagesViewController 单元添加自定义视图,使其包含一个带有一些按钮和文本视图的视图?

    我在用https github com jessesquires JSQMessagesViewController issues 1820 https github com jessesquires JSQMessagesViewCont
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • iOS 解决方案仅当图像尚未使用 SDWebImage 缓存在内存中时才加载带有动画的图像

    我已经为这个问题苦苦挣扎了几天 以前我使用 AFNetworking 类别来加载和缓存图像 但它的回调中没有提供缓存类型 所以我过去常常在每个控制器中跟踪哪些图像已经加载 我浏览了 SDWebImage 它提供了我正在寻找的东西 SDIma
  • 在 Mac OS X Yosemite 10.10.1 上包含搜索路径

    我只是为了更改包含搜索路径顺序 我相信 I d like to change the include search path Especially I need usr local include first 但它不会因为重复而改变 我怎样
  • iOS 内存警告

    我正在尝试使用从 Parse 数据库下载的图像填充集合视图 但我收到内存警告 然后偶尔崩溃 有谁知道其他应用程序如何设法呈现这么多图像而不崩溃 有人可以告诉我如何优化我已有的东西吗 这是所有相关代码 https gist github co
  • 切换到工作区并在 Xcode 中添加 CocoaPods 后提交 git 吗?

    我刚刚在 Xcode 5 中将 CocoaPods 添加到我当前的项目中 当然 CocoaPods 创建了一个工作区 并且我已在 Xcode 中启动了该工作区 我在工作区中看到了我的项目和 Pods 项目 我的项目从第一天起就处于源代码控制
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 如何添加授权以从新钥匙串对应用程序进行代码签名,而无需任何人工交互

    我正在尝试使用特定证书自动化构建 iPhone 应用程序的过程 因此 想象一下 如果不同的用户将他们的证书上传到系统中 并且可以立即用于代码签名 我想在没有任何交互的情况下做到这一点 我也不想用不同的用户证书弄乱系统或登录钥匙串 为此我有
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • 9 补丁可绘制行为糟糕,奇怪的人工制品 - 这里出了什么问题?

    所以我正在尝试 9 补丁图像 我从一个 PNG 文件开始 其中有一个带圆角的半透明正方形 然后 我创建了 9 patch 如下所示 注意顶部和左侧的小点 我认为这足以处理这个问题 但是当将这个 9 补丁添加到 Eclipse 时 我得到了奇
  • Objective C - 分配、复制、保留

    我是 Objective C 的新手 我有 C 的基础知识 包括指针的概念 我有两个基本问题 有人可以用一些类比来解释分配 复制和保留之间的区别吗 如何处理返回指针变量的函数 以及如何通过返回指针执行消息传递 更改文档的更新答案 这些信息现
  • windows下如何获取cpu的实际核心数? [复制]

    这个问题在这里已经有答案了 我知道 std thread hardware concurrency 的存在 但它返回虚拟核心的数量 当其针对物理核心数量时 该算法的工作效果最佳 提高 5 10 我怎样才能在 Windows 上用 C 获得这
  • Out-Host 是否正在缓冲?

    我有一个函数 我在其中调用一个应用程序 操作员 该应用程序生成几行命令行输出 下载一些文件 并返回一个字符串 app exe Out Host var return var 看来 控制台上出现了由app exe仅在那之后app exe终止
  • 如何快速检查字符串中是否有正确的英文单词? - Python

    我在 pandas 数据框中有一列 其中每个单元格都包含一串相当长的单词 这些字符串来自 SQL 数据库 包含非英语的单词和字母数字 ID 短语的混合 并以空格分隔 这些字符串最多可达 SQL 的最大字符数 这也不是一个小数据框 我有几百万
  • 从 firebase 中删除项目而不会使应用程序崩溃

    我是 android 新手 我一直在玩this来自 firebase 的示例应用程序 我想添加一个删除按钮发布详细活动它通过将 DatabaseReference mPostReference 设置为 null 来从数据库中删除当前正在查看
  • 无法使用 cordova-plugin-statusbar 设置状态栏的颜色

    我正在尝试更改离子应用程序中本机状态栏的颜色 但无法使其工作 我已经安装了 cordova plugin statusbar 并且安装得很好 下面的代码可以完美运行 if StatusBar StatusBar hide 但尝试使用任何其他
  • IE8后退按钮和动态内容

    我有一个页面 它提取外部 JavaScript 文件 然后该文件动态生成一些内容到该页面中 基本上插入一些 DIV 和 Flash 对象 当用户离开此页面然后按 后退 按钮时 Safari 和 Firefox 会显示生成的内容 但 IE 8
  • javaFX Tableview 数据不可见

    我尝试了所有方法来用数据填充 TableView 下一个代码在表中插入新行 但数据未出现在表中 我试图为此找到一个解释 但没有成功 请帮忙 我不知道出了什么问题 在控制器 java中 FXML private TableView
  • 如何使 llvm jit 在 MSVC++ 中工作

    看来 LLVM 中的 Kaleidoscopy 示例已经被破坏了 至少在 MSVC x64 中已经被破坏了一段时间 也许几个月 出于同样的原因 它在 MCJIT 和新的 Orc JIT 框架中不起作用 Get the address of
  • 根据关联模型的总和对玩家进行排序

    我有一个6500的数据库players每个玩家平均有15场比赛results Use case 我想生成一个玩家列表 按以下顺序排序sum他们的prize金钱 结果表中的一个字段 我更喜欢它在某种范围内 所以我还可以过滤玩家所在国家 地区的
  • 链接 PHP PDO 查询

    我不确定 链接 是否是正确的术语 但我要问的是是否可以进行类似于此 MySQLi 查询的 PDO 查询 sql mysqli fetch object db gt query SELECT username FROM member WHER
  • 由于 JavaScript 中不保证对象中的属性顺序,JSON.stringify() 的实际行为如何?

    Since JavaScript 中不保证对象中的属性顺序 如何JSON stringify 实际上表现如何 以下内容总是正确的 同一对象 吗 const o a 1 b 2 console log JSON stringify o JSO
  • ESRI:无法解析源映射

    我在 Google Chrome 开发者控制台中收到此错误 无法解析 SourceMap http localhost 15132 Scripts External igniteui css themes infragistics infr
  • https url 中的用户名和密码

    考虑一下网址 https foo 电子邮件受保护 上例中的用户名 密码部分是否符合 URL 参数 的条件 如中所定义这个问题 当您将用户名和密码放在主机前面时 该数据不会以这种方式发送到服务器 相反 它会根据所使用的身份验证模式转换为请求标
  • 如何用 SPS 和 PPS 数据填充 AVCodecContext 的“extradata”字段?

    问题是这样的 当解码 H264 流时ffmpeg 我可以获得SPS和PPS的原始数据 但我不知道如何将它们填充到extradata现场AVCodecContext 没有extradata 我无法正确解码帧 每次我打电话avcodec dec
  • 解析lxml中的html正文片段

    我正在尝试解析 html 片段 h1 title h1 img src I use lxml html fromstring 这让我发疯 因为它不断剥夺我的片段的标签 gt lxml html fromstring h1 a h1 tag
  • 读取RIP寄存器给出下一条指令的地址? [复制]

    这个问题在这里已经有答案了 我尝试读取x86 64寄存器的值rip 这是什么objdump shows 4017ec 48 8d 35 00 00 00 00 lea 0x0 rip rsi 4017f3 41 89 d4 mov edx
  • 从“mapend”函数到“Monoid”实例的函数?

    我有一个数据结构 它是玫瑰树的一个特定子类 形成具有最大下界和最低上界函数的格 并且它支持两个完全合理的函数作为Monoid班级的mappend 有什么办法支持匿名吗MonoidHaskell 中的实例 这是我应该考虑使用 Template
  • 无法识别的选择器发送到 NSKeyedUnarchiver 实例

    无法弄清楚为什么会不断抛出此错误 NSCFString bytes unrecognized selector sent to instance 0xc3eb200 对于这段代码 void parser SBJsonStreamParser