从javascript在Objective-C项目中读取/写入文本文件

问题描述:

我正在为iPhone制作应用程序,并且我正在使用Javascript在UIWebView中制作嵌入式YouTube。我想打开/读取/写入JavaScript上的某些事件的文件,然后想在Objective-C代码中使用该文件。但我该怎么做?我的意思是我可以在什么位置保存并打开文件。从javascript在Objective-C项目中读取/写入文本文件

我制作了一个名为youtubeAPI.html的文件,并从objective-c代码中调用此文件。它成功打开页面。现在我想打开一个文件并在每次改变它的状态时写下它,然后需要在obejective-c的最终结果中显示该文件。请告诉我如何做到这一点。

<!DOCTYPE HTML> 
<html> 
<body> 
<div id="player"></div> 
<script> 
    //Load player api asynchronously. 
    var tag = document.createElement('script'); 
    tag.src = "http://www.youtube.com/player_api"; 
    var firstScriptTag = document.getElementsByTagName('script')[0]; 
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 
    var done = false; 
    var player; 
    function onYouTubePlayerAPIReady() { 
     player = new YT.Player('player', { 
      height: '390', 
      width: '640', 
      videoId: 'JW5meKfy3fY', 
      events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange 
      } 
     }); 
    } 
    function onPlayerReady(evt) { 
     evt.target.playVideo(); 
    } 
    function onPlayerStateChange(evt) { 
     if (evt.data == YT.PlayerState.PLAYING && !done) { // NEED TO ADD FILE OPERATION HERE 
      setTimeout(stopVideo, 6000); 
      done = true; 
     } 
    } 
    function stopVideo() { 
     player.stopVideo(); 
    } 
</script> 
</body> 
</html> 

感谢 Akansha

// Get file path 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString filePath = [documentsDirectory stringByAppendingPathComponent:filename]; 

// Read file contents 
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 

// Write file contents 
[[content dataUsingEncoding:NSUTF8StringEncoding] writeToFile:filePath atomically:NO]; 
+0

感谢您的回复,但我想在JAVASCRIPT中打开/读取/写入函数中的某些内容,并且需要从objective-c中打开并获取该文件的数据。这将在应用程序的文档目录中打开一个文件,但我如何访问该文件并从Javscript写入一些内容。 – Akansha 2012-04-17 06:06:31

UIWebView的是沙箱,有没有机会做到这一点,JavaScript不能直接访问文件系统,这是我知道的。 但你可以做其他事情。首先:将状态保存到窗口对象中;

such as window.state = "someting"; 

第二:通过Objective-C读状态;

NSString *state = [webView stringByEvaluatingJavaScriptFromString:@"window.state"];