问题标签 [nskeyedunarchiver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
891 浏览

swift - Swift,在展开可选值时意外发现 nil (NSKeyedUnarchiver)

我想通过以下方式将数组存储在缓存中。但不知何故,我收到错误“在展开可选值时意外发现 nil

我的代码如下

从缓存加载

保存到缓存中

有人可以帮我解决一些问题吗? 使用 NSCoding 协议进行编辑

0 投票
1 回答
77 浏览

php - 无法在 Objective C 中打开使用 CFPropertyList 在 PHP 中生成的 plist 文件

我有一个包含序列化 plist 的二进制文件。该文件是由以下语句在 PHP 中生成的:

simple_array.plist 文件的二进制内容是:

6270 6c69 7374 3030 d301 0203 0405 0651 6151 6251 6355 6170 706c 6556 6261 6e61 6e61 a307 0809 5178 5179 517a 080f 1113 151b 2226 282a 0000 0000 0000 0101 0000 0000 0000 000a 0000 0000 0000 0000 0000 0000 0000 002c

我可以毫无问题地在 Xcode 中打开 simple_array.plist(通过双击它)。

我也可以稍后在 PHP 中使用以下语句重新打开它,也没有问题:

问题是当我尝试在 Objective C 中打开文件时。这些是我正在使用的语句:

fileInfoArraynil

最后两个语句打开了在 Objective C 中生成的其他 plist 文件,但不是 PHP 生成的文件(在 Linux 上)。

知道这里发生了什么吗?这个网页http://nshipster.com/nscoding/讨论了 NSCoding 对 NSKeyed​Archiver 的重要性......这可能是相关的,如果是的话,我如何在 PHP 中应用?

0 投票
1 回答
52 浏览

ios - NSKeyedArchiver Issue when app downloaded from iTunes via TestFlight

I have a very strange bug that I've bee trying to track down for several days. I'm saving state data for a game in a file in the app's Documents directory.

Everything had been working fine until a recent iOS update (not sure exactly when, somewhere around 9.0). Suddenly, data is not being archive / unarchived correctly.

The weird part is the code works fine when I run it from Xcode with the iPad tethered to my MAC or when in the emulator. When i download the app from the iTunes using TestFlight, it no longer works. This has made it extremely difficult to debug.

I've checked and double checked everything, I'm using the URL path, added error trapping code, etc. but archiving fails to work correctly when the app is installed from iTunes via TestFlight.

As a last resort I added new code that archives my object, immediately unarchives it into another variable, then display some data in a label. The resulting object contains null data.

No exceptions are thrown.

Just to reiterate, the code doesn't work ONLY when the app in installed from iTunes.

Here is the code snippet;

Here is the data model

0 投票
1 回答
777 浏览

ios - NSKeyedUnarchiver 不会返回数据

我正在制作一个跟踪用户锻炼的应用程序。我有两个自定义类,第一个是ExerciseModel,它保存锻炼期间执行的每个锻炼的数据,包括名称、组数、次数等。这是我的数据模型:

我的第二个自定义类称为WorkoutStorage,这是为了允许用户保存整个锻炼并在以后检索它们。练习属性是一个练习模型对象数组,如上所述。这是我的 WorkoutStorage 数据模型:

我按照 Apple 的 Persist Data 教程为此设置了 NSKeyedArchiver 和 NSKeyedUnarchiver,但我仍然无法检索我的数据。当我尝试加载锻炼时,我调用以下函数:

目前我只能返回一个 WorkoutStorage 对象,但是当我尝试检索包含所有存储的 WorkoutStorage 对象的数组时,我收到一条错误消息:Could not cast value of type 'Workout_Tracker.WorkoutStorage' (0x1000fcc80) to 'NSArray' ( 0x19f6b2418)。我已经阅读了很多文档,试图弄清楚为什么这只会返回一个对象,并检查了具有类似问题的问题,但无济于事。我最初按照 Apple Persist Data 教程设置我的应用程序来存储和加载我的ExerciseModel对象,这似乎完美无缺。我以同样的方式设置了WorkoutStorage类,但这里似乎存在问题。

任何帮助将不胜感激!!

**编辑* 这是我用来归档 WorkoutStorage 对象的代码:

锻炼一次只由用户创建一个,所以每次完成一个,我将对象传递给上述函数以存档它。

为了取消归档所有对象,我试图按照以下方式做一些事情:

其中 loadStoredWorkouts() 函数将是:

0 投票
3 回答
5239 浏览

ios - 如何将布尔转换为 NSData

我发现这篇文章将 a 转换IntNSData

它说这样做:

我想知道,对于将 a 转换为Bool,我是否应该这样做NSData,如下所示:

就我而言,我总是知道这Bool将是真实的。既然是这种情况,我想知道是否有更简单的方法可以将值“true”转换为NSData对象。

一些背景背景:

我将此值与此库NSData一起存储在钥匙串中。

我也将NSData值转换回布尔值NSKeyedUnarchiver.unarchiveObjectWithData

0 投票
3 回答
3954 浏览

xcode - decodeBool forKey (Xcode 8, Swift 3) 上的 NSCoder 崩溃

我有这个简单的课程

保存代码:

读取代码:

当 NSKeyedUnarchiver 完成它的工作时,就会出现问题。我不明白问题出在哪里。

谢谢!

0 投票
0 回答
30 浏览

ios - NSKeyedUnarchiveObjectWithData 的 xcode 未知错误,

发生未知错误NSKeyedUnarchiveWithObjectWithData

我曾经在我的项目NSKeydArchiver中存档一个[NSIndexPath:UIColor]字典,NSData但是当我在我的 XCode 和 iOS 模拟器中构建项目时发生错误。

然后,当我尝试任何无法构建的 iOS 模拟器时。我什至通过 git 更改了分支并构建它,出现同样的问题。

但是当我生成 IPA 文件并将其安装到我的 iPhone 中时,构建应用程序没有问题。

这是错误和源代码。有人有这方面的经验吗?

“unarchiveObjectWithData:”线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

有一个 NSUserDefaults ,我将 [NSIndexPath:UIColor] 字典保存到 NSUserDefaults 以便连续使用数据。

0 投票
1 回答
3685 浏览

swift - NSKeyedUnarchiver 不适用于 Swift 3

我有以下代码用于取消归档 Mac 应用程序中的文件:

但是,自从我在 Xcode 8.0 中升级到 Swift 3 后,我收到以下错误消息: 'unarchiveTopLevelObjectWithData' is unavailable in Swift: Use 'unarchiveTopLevelObjectWithData(_:) throws' instead,这几乎是一回事,对吧?所以我对如何解决这个问题感到非常困惑。这是 Xcode 中的错误吗?

0 投票
4 回答
3167 浏览

ios - swift: nscoding decodeObject 一直都是 nil

我得到了以下代码来编写一个名为 Packet 的对象并通过 Multipeer 连接发送到另一端。但是,每当它尝试解码编码对象时,我都会收到以下错误。

我得到的错误是----从我这里打印出来----“initcoder”致命错误:在展开可选值时意外发现 nil 2016-09-30 13:32:55.901189 Connection[323:33022] 致命错误:在展开可选值时意外发现 nil

但是当我构造对象时,所有的值都被设置了。我毫无问题地承包了一个 Packet 对象。

---- 附加信息 ------ 当通过乘法器连接发送到另一端时,我使用以下代码对数据进行编码和解码。

我想知道什么会导致错误。谢谢。

0 投票
1 回答
2840 浏览

swift3 - NSKeyedArchiver.unarchiveObject Swift 3 iOS 10

我一直在寻找这个问题的答案,但我找不到任何答案,类似的根本没有答案。基本上,我想用 NSKeyedUnarchiver.archiveRootObject() 保存数据并用 .unarchiveObject(withFile) 加载它。它在 Swift 2.3 上运行良好,现在它崩溃了,说非归档部分总是返回 nil。我还会检查该文件是否存在并且确实存在。我真的不知道发生了什么。这是加载过程:

这是节省:

但最后我总是得到“致命错误:在展开可选值时意外发现 nil”