我正在创建一个个人使用的小应用程序,显示我的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文件。如果需要测试,请随时更新读数。
将所需的值放在URL中“=”符号的正后方。
Temperature.php
对于湿度,用湿度和湿度代替温度和温度。
谢谢!
最佳答案
如果你改变
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
您可以设置
NSURLRequestCachePolicy
,ReloadIgnoringLocalAndRemoteCacheData
应该忽略所有缓存,只请求页面而不查看任何缓存。这还将在请求中包含超时
你的应用程序也将在其
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()