Mar*_*son 0 iphone objective-c archiving
我可能没有在这里看到一些东西,这就是为什么我要求帮助:)这是我有一个NSMutable项目符合NSCoding协议的交易,但NSKeyedArchiver总是无法归档它...这是我的对象实现:
@implementation YTVideo
@synthesize URL,thumb,titulo;
#pragma mark NSCoding
#define kTituloKey @"titulo"
#define kURLKey @"URL"
#define kThumbKey @"thumb"
-(id)initWithData:(NSString *)ktitle :(UIImage *)kThumb :(NSURL *)kURL{
self.titulo = ktitle;
self.thumb = kThumb;
self.URL = kURL;
return self;
}
- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:titulo forKey:kTituloKey];
[encoder encodeObject:URL forKey:kURLKey];
NSData *thumbData = UIImagePNGRepresentation(thumb);
[encoder encodeObject:thumbData forKey:kThumbKey];
}
- (id)initWithCoder:(NSCoder *)decoder {
NSString* ktitulo = [decoder decodeObjectForKey:kTituloKey];
NSURL* kURL = [decoder decodeObjectForKey:kURLKey];
NSData* kThumbdata = [decoder decodeObjectForKey:kThumbKey];
UIImage* kThumb=[UIImage imageWithData:kThumbdata];
return [self initWithData:ktitulo:kThumb:kURL];
}
@end
Run Code Online (Sandbox Code Playgroud)
在程序执行期间,我有一个名为videosArray的NSMutable数组.
然后,最终,我尝试:
NSString* path =[NSHomeDirectory() stringByAppendingPathComponent:@"teste.wrapit"];
NSLog(@"PATH =%@",path);
bool teste = [NSKeyedArchiver archiveRootObject:videosArray toFile:path];
NSLog(@"aramzenamento:%@",teste ? @"sucesso!" :@"Nope");
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
NSLog(@"Arquivo armazenado existe?%@",fileExists ?@"Sim":@"Nao");
Run Code Online (Sandbox Code Playgroud)
我的布尔检查总是失败...任何我完全错误的想法?谢谢!!
您遇到的问题与此无关NSKeyedArchiver.根据它的外观,您尝试将对象归档到沙箱的根级别(返回的目录NSHomeDirectory()).尝试使用替换第二个代码块的第一行
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
path = [path stringByAppendingPathComponent:@"teste.wrapit"];
Run Code Online (Sandbox Code Playgroud)
获取Documents文件夹路径的另一种(可能更清晰)方法是使用C函数NSSearchPathForDirectoriesInDomains,该函数返回与第一个参数匹配的路径数组:
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"teste.wrapit"];
Run Code Online (Sandbox Code Playgroud)
值得指出的是,在iOS上,当你为第一个参数使用内置常量(例如)时,函数NSSearchPathForDirectoriesInDomain可以保证返回一个NSArray元素NSDocumentDirectory,因此你可以安全地使用objectAtIndex:0数组.
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |