将明文文档读入iOS中的NSArray?

时间:2013-04-06 23:25:32

标签: ios objective-c

我是iOS新手,但对c ++和Python有丰富的经验。我试图找出如何将我在计算机上的纯文本文件读入xcode中的NSArray。在c ++中,我会这样做:

while(istr>>string) myArray.push_back(string);

但是,我需要创建一个存储在iOS设备上的本地副本。有没有办法打包这些数据,以便将JUST THE ARRAY的本地副本存储在设备上?我在考虑用JSON序列化做些什么。 我真的应该把它搞砸了吗:

NSArray myArray = [[NSArray alloc] initWithObjects: @"myInfo", nil];

我想只是想要一种更优雅的方式来处理这个问题。

2 个答案:

答案 0 :(得分:3)

我想也许你在考虑这个问题。在C和C ++中,字符串是字节数组。在ObjC中,有一个对象。它被称为NSString,它可能是你应该存储明文的。

如果你已经有一个字节数组,它甚至有一个简单的类方法来帮助你解决这个问题:

+(id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

有关详细信息,请参阅NSString documentation

至于将其存储在设备上,有一些解决方案的范围从简单(NSUserDefaults)到复杂(Core Data),但几乎任何东西都希望纯文本在{{ 1}}。

修改 这个问题的标题是关于从文件系统中读取字符串。第一步是将文件的字节转换为NSData对象。简单的方法:

NSString

然后使用此+(id)dataWithContentsOfFile:(NSString *)path的初始化程序

从数据中创建一个字符串

NSString

答案 1 :(得分:0)

我不知道这是否可以帮到你,无论如何只要你需要将一组数据存储到文件系统并将其反序列化回NSArray,一种简单的方法就是使用plist。 这是一种存储少量数据的便捷方式,没有任何关系(有核心数据)。主要优点是你可以在其中存储NSArray,NSDictionary,NSNumber,NSString,NSDate和NSData(所以任何类型的二进制信息),并通过一些简单的方法自动序列化和反序列化。

您可以通过以下方式将NSArray写入文件:

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag

并将其反序列化:

+ (id)arrayWithContentsOfFile:(NSString *)aPath

如果您只想向应用提供一些初始数据,例如字符串数组或类似内容,您可以通过转到File-> New-> File手动将plist添加到项目中并选择Resources->属性列表,并手动填写。

您可以在https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html

了解更多信息