gpt4 book ai didi

ios - 写入和读取自定义对象到文件 IOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:46:35 26 4
gpt4 key购买 nike

我有这个对象。

@interface SeccionItem : NSObject <NSCoding>
{
NSString * title;
NSString * texto;
NSArray * images;
}

@property (nonatomic,strong) NSString * title;
@property (nonatomic,strong) NSString * texto;
@property (nonatomic,strong) NSArray * images;

@end

有了这个实现

@implementation SeccionItem
@synthesize title,texto,images;


- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:title forKey:@"title"];
[encoder encodeObject:texto forKey:@"texto"];
[encoder encodeObject:images forKey:@"images"];
}

- (id)initWithCoder:(NSCoder *)decoder {
title = [decoder decodeObjectForKey:@"title"];
texto = [decoder decodeObjectForKey:@"texto"];
images = [decoder decodeObjectForKey:@"images"];
return self;
}

@end

我想将一个充满这些对象的数组保存到磁盘上的一个文件中。

我这样做:

[NSKeyedArchiver archiveRootObject:arr toFile:file];

阅读

NSArray *entries = [NSKeyedUnarchiver unarchiveObjectWithFile:name];
return entries;

但是读取的数组总是空的,不知道为什么,有一些疑问。

我应该为文件路径使用什么格式?在 toFile:?

对象上的 NSArray 填充了 NSData 对象,所以我可以对它们进行编码?

我真的迷失了。

最佳答案

查看 NSKeyedArchiver 的文档,尤其是 archiveWithRootObject:toFile:方法。

路径基本上是文件应该存储的地方,包括文件名。例如,您可以将数组存储在应用程序的文档文件夹中,文件名为 Storage。下面的代码片段很常见:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDir = [paths objectAtIndex: 0];
NSString* docFile = [docDir stringByAppendingPathComponent: @"Storage"];

NSSearchPathForDirectoriesInDomains 方法用于代替绝对路径,因为 Apple 可以根据需要更改文档文件夹路径。

您可以使用上面的 docFile 字符串提供给 archiveWithRootObject:toFile: 方法的 toFile 参数。

关于ios - 写入和读取自定义对象到文件 IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com