我正在尝试在保存a的内容时优化存储空间NSTextView
,即其NSTextStorage
属性本身a NSAttributedString
.
将其保存为Data
,例如使用该rtfd(from:documentAttributes:)
方法,并作为Codable
结构的一部分,会产生非常大的字符串,比内容本身大得多,尤其是在将图像插入到内容中时NSTextView
.例如,插入200K图像将生成5MB的JSON文件.
旁注:当Data
对象直接编码而不是编码对象的属性时更糟糕,因为它是以小整数数组的形式编码而不是任意字符串.我不知道为什么,虽然我能够通过插入Data
一个简单的包装结构来防止这种情况.
奇怪的是,使用ZIP压缩实际的JSON文件仍然会产生4MB的文件,只有20%的增益,因此我不清楚200K图像如何变成如此庞大,难以压缩的编码字符串.
我想弄清楚NSAttributedString
使用Codable
协议有效存储的正确方法是什么.非常感谢任何提示或建议.
我也想知道是否有一个有效的二进制编码选项Codable
.
在ActionScript 3中,您可以确定对象O是C类还是使用...扩展或实现C类(直接或间接)的类
if (O is C) {
...
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是测试类CC是否扩展或实现类C(直接或间接),而不必实例化对象.
在Java中,你会使用...
if (C.isAssignableFrom (CC)) {
...
}
Run Code Online (Sandbox Code Playgroud)
http://java.sun.com/javase/6/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)
ActionScript 3怎么样?
谢谢!
我有一个冗长的操作O,它通过NSInvocationOperation调用,它本身通过将它添加到NSOperationQueue来安排,以便它以异步方式运行.在我的应用程序中,在两种不同的情况下调用了冗长的操作O.
在情况A中,由于在某个视图中点击某个小部件而调用操作O. 轻触窗口小部件后,操作O运行一段时间(我可以看到这要归功于UIActivityIndicator),但它不会减慢或阻止UI,因此我可以点击其他窗口小部件并执行其他UI操作操作O正在运行.
在情况B中,在app委托的didReceiveLocalNotification方法中,作为接收本地通知的结果调用操作O. 在这种情况下,在调用操作O之后立即执行的UI操作仍然在didReceiveLocalNotification方法中,相当慢,基本上是爬行,几乎就像操作O接管了CPU一样.
为什么这样,以及在B情况下调用操作O的正确方法是什么,以便它确实在后台以较低优先级并发运行,而其余的代码在didReceiveLocalNotification方法中以正常速度运行?
注意:操作O通过本地通知(删除现有通知或安排新通知)和日历(查询事件存储以更好地安排本地通知)进行调整.
看来 Swift 4 中的 Character 类没有实现 Codable 协议。我想了解这样做的基本原理,因为该类似乎有资格作为 Swift 中的基础类。
看看下面的(故意剥离的)递归类,那么在保留使用字符作为字典键的同时使其可编码的最佳方法是什么?
class MyClass: Codable { <- does not compile
var myProperty: [Character: MyClass]?
var myOtherProperty: Int = 42
}
Run Code Online (Sandbox Code Playgroud)
谢谢你!