我正在创建一个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)
实例方法.
应用程序已修复!