使用远程.txt文件中的数据更新文本

时间:2015-04-15 19:20:45

标签: php swift

我正在创建一个供个人使用的小应用程序,显示我的Arduino气象站的温度和湿度。我的气象站将温度和湿度上传到我的Web服务器并保存到.txt文件中。我希望我的应用程序然后从服务器中提取数据并显示在文本区域中。

以下是有关数据如何存储在服务器上的一些有用信息: 湿度和温度存储在两个不同的.txt文件中。 温度文件 - Temperature 对于湿度,用URL替换温度和湿度

用于上传数据的PHP文件 -     

$fileContent = $var1. "%\n";

$fileStatus = file_put_contents('humidity.txt',$fileContent);

if($fileStatus != false)
{
echo "Success: Values written to server";
}

else
{
echo "Fail: Values were written to server";
}
?>

除了名称和文件URL之外,湿度PHP文件是相同的。

最后这是我的ViewController代码:

import UIKit

class ViewController: UIViewController {
@IBOutlet weak var tempLabel: UILabel!
@IBOutlet weak var humidLabel: UILabel!
@IBOutlet weak var refreshButton: UIButton!

@IBAction func buttonPressed(sender: AnyObject) {

    var urlString = "http://torsher.ca/Weather/temperature.txt"

    var url = NSURL(string: urlString)

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in

        var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))

        var contentArray = urlContent!.componentsSeparatedByString("<span class=\"phrase\">")

        var newContentArray = contentArray[1].componentsSeparatedByString("</span>")

        var tempContent = newContentArray[0] as String

        println(tempContent)

        dispatch_async(dispatch_get_main_queue()) {
        self.tempLabel.text = tempContent
        }

    }

    task.resume()
    }


override func viewDidLoad() {
    super.viewDidLoad()

    }
}

我希望能够在应用打开时强制刷新和刷新。我的Arduino每15分钟推送一次新数据。但是对于创建,我通过使用每个读取的URL手动更新.txt文件。如果需要测试,请随时更新读数。

在&#39; =&#39;之后立即输入您想要的值登录URL。 Temperature.php 湿度用湿度和湿度代替温度和温度。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你改变了

let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in

let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in

您可以设置NSURLRequestCachePolicyReloadIgnoringLocalAndRemoteCacheData应该(因为它声明)忽略所有缓存,只是请求页面而不查看任何缓存。

这还包括请求中的超时

你的应用程序还将在其appDelegate中包含此函数,你可以在这里调用一个函数来重新加载数据,这将在你打开(或从多任务屏幕)应用程序时执行

func applicationDidEnterBackground(application: UIApplication) {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

编辑:

游乐场:

import Foundation
import UIKit
import XCPlayground


var urlString = "http://torsher.ca/Weather/temperature.txt"
var url = NSURL(string: urlString)

func getData(){
    let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in
        var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))
        var tempContent:String = urlContent as! String    
        println(tempContent)
    }

    task.resume()
} 

getData()

XCPSetExecutionShouldContinueIndefinitely()