0
我有一个对象具有自定义UIViews,UIImage,和一些字符串的NSMutableArray。iOS的文件编码/解码视图和图像文件目录
我把那个对象放到字典里。字典被推入NSData然后我这样做:
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
NSString *fileName = DATA;
path = [path stringByAppendingPathComponent:fileName];
NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[archiver encodeObject:dict forKey: DATA];
[archiver finishEncoding];
[[NSFileManager defaultManager] createFileAtPath:path
contents:data
attributes:nil];
它保存成功。当我尝试加载数据时,文件系统显示我的对象已保存,但是当我尝试解码时,它说我的数据为空。
这里是我的解码码:
-(NSDictionary*)loadData
{
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
if (directoryContent != nil && [directoryContent count] > 0)
{
NSLog(@"CONTENT COUNT: %d",[directoryContent count]);
NSString *fileName = DATA;
path = [path stringByAppendingPathComponent:fileName];
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:[directoryContent objectAtIndex:0]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *dict = [unarchiver decodeObjectForKey: DATA];
[unarchiver finishDecoding];
return dict;
}
else
return nil;
}
我的应用程序,用户可以四处移动一堆意见,我只是试图找到一个简单的方法来存储视图帧,而无需提取转换每个int /字符串值。我也希望不必将我的UIImage分解成一个字节数组,然后将其重新加载回UIImage。
我在这里做疯狂的东西,希望功能是不可能的?
我唯一的选择是将数组中的每个UIView细分为转换,帧等单独的值吗?
想法?
你真的想存档视图并写出UIImages吗?关于你要完成的任务,你不会详细讨论,但如果你只是允许用户移动视图并且想保留这些视图的位置,那么更好的方法是归档这些视图的位置,然后用这个位置信息重新创建视图? – mattyohe
我可以做到这一点。那么UIImage呢?我确实需要存储此图像并重新加载它。我怎么做? – spentak