stringWithContentsOfFile和initWithContentsOfFile在多次运行后返回null

Nat*_*Dev 5 ios

我正在创建一个iOS应用程序,它读入文本文件并在UIText字段中显示内容.

对于应用程序的前三次连续运行(在不退出的情况下重新启动新会话),数据将被正确读取.但是在第四次尝试时,从文件返回的数据都是空值.

我已经验证了文件的完整性.使用stringWithContentsOfFile时存在问题initWithContentsOfFile.

经过数小时的故障排除后,我认为该问题在某种程度上与在上述方法中清除缓冲区有关.

非常感谢有关此问题的任何见解.我尝试了许多没有运气的事情.

这是我用来在文件中读取的代码:

TheString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle]     
pathForResource:@"My_TextFile" ofType:@"txt"] encoding:NSUTF8StringEncoding error:NULL];
Run Code Online (Sandbox Code Playgroud)

这是我用来显示文件某些内容的代码(内容放在NSArray类型的数组中):

NSArray *My_Array;

My_Array= [TheString componentsSeparatedByString:@"\n"];

/* Obtain specific data to display */
    DisplayedData = [My_Array objectAtIndex:M[l]-1];
:
:
/* Display the data in the view */
    MyUITextView.text = DisplayedData;

/* Log the data */
    NSLog(@"%@", MyUITextView.text);
Run Code Online (Sandbox Code Playgroud)

在上面代码的第四次调用中,返回的数据为空,NSLOG返回空值

非常感谢您的帮助!

小智 5

也许我回答有点迟,但是,无论如何,也许有人会发现它很有用.OK,我也花了一天的努力,为什么我的滚动视图定制类工作3次,并在4个时间拒绝弄清楚......我发现,这个问题有相当相同的属性你:嵌套NSString对象意外地消失了.虽然指针指向内存中的相同地址,但内存已经填充了相当任意的对象而不是我的NSStrings.我注意到我NSString使用以下类方法创建了这些:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc  error:(NSError  **)error
Run Code Online (Sandbox Code Playgroud)

所以,我不是这些人的拥有者NSString.而且我认为作为所有者可以是一个解决方案,所以我NSString通过alloc和创建了我的

- (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc  error:(NSError  **)error 
Run Code Online (Sandbox Code Playgroud)

实例方法.

应用程序已修复!