从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];
答
UIWebView的是沙箱,有没有机会做到这一点,JavaScript不能直接访问文件系统,这是我知道的。 但你可以做其他事情。首先:将状态保存到窗口对象中;
such as window.state = "someting";
第二:通过Objective-C读状态;
NSString *state = [webView stringByEvaluatingJavaScriptFromString:@"window.state"];
感谢您的回复,但我想在JAVASCRIPT中打开/读取/写入函数中的某些内容,并且需要从objective-c中打开并获取该文件的数据。这将在应用程序的文档目录中打开一个文件,但我如何访问该文件并从Javscript写入一些内容。 – Akansha 2012-04-17 06:06:31