我是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];
我想只是想要一种更优雅的方式来处理这个问题。
答案 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->属性列表,并手动填写。
了解更多信息