2013-04-06 56 views
0

我是iOS新手,但擁有豐富的C++和Python經驗。我想弄清楚如何將我的電腦上的純文本文件讀入xcode中的NSArray。在c + +我會這樣做:在iOS中將純文本文件讀入NSArray?

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

但是,我需要創建一個本地副本存儲在iOS設備上。有沒有辦法可以打包這些數據,以便JUST THE ARRAY的本地副本將存儲在設備上?我正在考慮用JSON序列化或其他方法做一些事情。 如果我真的只是吸起來,並做到這一點:

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

我只想要一個更優雅的方式來處理這個問題,我猜。

+0

究竟你希望你的陣列來存儲呢?一串明文? – arnoapp 2013-04-06 23:29:58

回答

3

我想也許你在想這個問題。在C和C++中,字符串是字節數組。在ObjC中,有一個對象。這就是所謂的NSString,而且它可能是你應該被存儲明文

它甚至有一個簡單的類方法來幫你出這一點,如果你已經有了一個字節數組:

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

NSString documentation瞭解更多詳情。

至於存儲在設備上,有從簡單(NSUserDefaults)到複雜(Core Data)解決方案,但相當多的東西會想到純文本處於NSString

編輯: 這個問題的標題談到從文件系統讀取字符串。第一步是將文件的字節放入一個NSData對象中。最簡單的辦法:如果你

-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

0

我不知道這是否可以幫助你,反正:

+(id)dataWithContentsOfFile:(NSString *)path

然後進行串出的數據與此初始化的NSString只需要將一組數據存儲到文件系統並將其反序列化回NSArray,一種簡單的方法就是使用plists。 這是一種方便的方式來存儲少量的數據,沒有任何種類的關係(有核心數據)。主要優點是你可以在其中存儲NSArray,NSDictionary,NSNumber,NSString,NSDate和NSData(所以任何類型的二進制信息),他們會通過一些簡單的方法自動序列化和反序列化。

您可以用這種方法寫一個NSArray到一個文件:

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

,並與該反序列化回:

+ (id)arrayWithContentsOfFile:(NSString *)aPath 

如果你只是想提供一些初始數據的應用程序,例如一個字符串或類似的數組,你可以通過File-> New-> File並選擇Resources-> Property list並手工填寫plist來爲你的項目添加一個plist。

你可以閱讀更多的https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html