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

标签 php swift

我正在创建一个供个人使用的小应用程序,用于显示我的 Arduino 气象站的温度和湿度。我的气象站将温度和湿度上传到我的网络服务器并保存到一个 .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

您可以设置 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.
}

编辑:

Playground :

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()

关于php - 使用远程 .txt 文件中的数据更新文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658970/

相关文章:

swift - Google Speech to Text iOS 应用示例 : could not build module 'googleapis'

swift - 从 Pipe (stdout) 获取 ffmpeg 信息

ios - WKWebView 在模拟器上保持空白(允许任意加载)

core-data - 快速核心数据获取关系

php - 如何解决跨源laravel-echo-server错误?

php - 如何处理大型 CSV 文件以插入到 mysql 中

php - 具有多个leftjoin的Mysql

javascript - 如果使用 php 标签,php jquery 示例将不起作用

php - 为什么 if (xmlHttp.readyState == 4) 会出错

ios - self.view.frame.width 在自定义键盘 View Controller 中返回 0