草庐IT

NSKeyedArchiver

全部标签

ios - 使用 NSKeyedArchiver 从保存在 NSDictionary 中的 NSManagedObjects 生成 XML

我有一个NSDictionary,其中包含一堆NSManagedObject。然后我可以使用NSKeyedArchiver将其写入NSData对象。这些是使用thismethod.生成的哪个工作正常并允许我将模式的一部分保存到光盘,然后将其作为核心数据模型中的一组新对象读回。如果我使用archivedDataWithRootObject之一:或archiveRootObject:toFile:,根据documentation我可以看到存档的格式是NSPropertyListBinaryFormat_v1_0,而我想在NSPropertyListXMLFormat_v1_0中进行序列化,

ios - 如何迁移已使用 NSKeyedArchiver 持久化的对象?

我使用的是Archiver版本并遇到了问题。在我项目的前一个版本中,Challenge类被序列化到磁盘//v1.0@interfaceChallenge:NSObject{...@property(nonatomic,strong)NSString*challengeId;@property(nonatomic,strong)NSString*title;@property(nonatomic)BOOLisCompleted;...}现在,在应用程序的1.1版中,希望通过添加两个新的@properties来更改Challenge对象。//v1.1@interfaceChallenge:

ios - NSKeyedArchiver archiveRootObject 和 NSFileProtectionComplete/NSFileProtectionCompleteUnlessOpen

是否真的可以调用NSKeyedArchiverarchiveRootObject并使用数据保护API将文件属性设置为NSFileProtectionComplete或NSFileProtectionCompleteUnlessOpen? 最佳答案 首先尝试将对象写入特定位置,在本例中为docFile(设置为文档目录)。然后将文件属性应用于docFile。NSArray*paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)

ios - NSKeyedArchiver archiveRootObject 一直返回 NO

过去几个小时我一直在努力解决这个问题,但我已经没有想法了。我想做的只是存档一个对象,但是方法archiveRootObject一直返回NO这是我的代码:NSArray*paths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);NSString*cacheDirectory=[pathsobjectAtIndex:0];cacheDirectory=[cacheDirectorystringByAppendingPathComponent:@"MyAppCache"];NSStrin

iOS7 NSKeyedArchiver 警告 : replacing existing value for key 'UITintColor' ; probable duplication of encoding keys in class hierarchy

我使用xib创建了一个uitableviewcell。我有一个细胞工厂,其中的细胞以这种方式取消存档:-(instancetype)initWithNib:(NSString*)aNibName{self=[superinit];if(self!=nil){self.viewTemplateStore=[[NSMutableDictionaryalloc]init];NSArray*templates=[[NSBundlemainBundle]loadNibNamed:aNibNameowner:selfoptions:nil];for(idtemplateintemplates){i

ios - NSKeyedArchiver 不存档我的 Codable 类

这是我的Codable类:classSensorOutput:Codable{vartimeStamp:Date?vargyroX:Double?vargyroY:Double?vargyroZ:Double?varaccX:Double?varaccY:Double?varaccZ:Double?varmagX:Double?varmagY:Double?varmagZ:Double?init(){}}这里我尝试写入和读取那个类的对象到文件:letmyData=SensorOutput()myData.timeStamp=Date()myData.gyroX=0.0myData.gy

iphone - 使用 NSKeyedArchiver 复制 UIView 抛出 NSInvalidUnarchiveOperationException

用这个复制UIViewUIViewcopyOfView=[NSKeyedUnarchiverunarchiveObjectWithData:[NSKeyedArchiverarchivedDataWithRootObject:originalView]]这会引发以下错误:NSInvalidUnarchiveOperationException[NSKeyedUnarchiverdecodeBoolForKey]:键值(UIHighlighted)不是bool值 最佳答案 如果我们将Archive/Unarchive与UIImageV

swift - NSKeyedArchiver 和 NSKeyedUnarchiver 取决于 bundli-ID

我的应用有2个目标:APP_TARGET1和APP_TARGET2我正在我的APP_TARGET1中序列化一个对象并将其存储(sqlite、文件)letdata:NSData=NSKeyedArchiver.archivedDataWithRootObject(maptheme);我正在使用APP_TARGET2读回blob/文件并尝试反序列化该对象。lettemp=NSKeyedUnarchiver.unarchiveObjectWithData(data!);->我收到以下错误,这表明序列化对象取决于bundli-ids?请有人告诉我,这不是真的,并且有一个变通方法可以让一个应用程

ios - 如何在新版本上转换 NSKeyedArchiver 对象

我刚刚在应用程序商店发布了一个应用程序,我的一位顾客告诉我,我应该将之前使用NSKeyedArchiver存储为Integer的数据类型更改为Double。很容易更改应用程序的数据模型,但是当我在我的测试设备上重新加载应用程序时,NSKeyedUnarchiver显然不想将Integer解码为Double并抛出NSInvalidUnarchiveOperation异常。我想知道其他iOS开发人员会如何处理这种情况。我不想删除所有用户以前保存的数据,但这是我看到的唯一解决方案。我的代码贴在下面。我已经评论了一些我尝试无济于事的解决方案requiredconvenienceinit?(co

ios - Swift - 使用 NSKeyedArchiver 保存用户数据,在转换为 NSArray 时出错

所以我有一组自定义对象。当我尝试将数组保存到NSUserDefaults时,我必须将它们存档。这是我正在做的事情来归档我的自定义对象的数组:overridefunctableView(tableView:UITableView,numberOfRowsInSectionsection:Int)->Int{//3varallMessages=defaults.objectForKey(UserDefaultsMesssageKey)as![AddMessageViewController.harassText]varaMessage=AddMessageViewController.ha