检查存储的文件和URL

时间:2015-12-11 17:45:17

标签: ios swift

我是Swift编程的新手,并尝试在我的脑海(和我的代码)中理清以下情况的最佳实践:

我的应用程序在加载时从服务器上的简单txt文件(仅2KB)访问数据。我不想将此文件与我的应用程序捆绑在一起,因此我可以根据需要编辑数据,而无需用户每次刷新此数据源时都更新应用程序。

此外,我更喜欢我的应用每次加载时都不需要在其服务器上访问此文件。因此,我希望应用程序在第一次打开时访问该文件(我有此功能正常工作),然后将数据文件存储在手机上,因此每次启动时都不需要Internet连接。 / p>

我无法解决的问题(以及广泛的谷歌搜索没有提供太多的见解)是我如何检查我的应用程序启动时,如果其存储的数据文件与位于服务器上的数据文件不同。然后,如果不同,它可以下载并用最新的数据文件替换手机上的数据。

我正在考虑使用Core Data API在本地存储txt文件。感谢您提供的任何帮助建议或其他可能解答的问题。

>>>更新(02/06/16)<<<

这是我用伪代码(或我的伪代码版本......)最终得到的解决方案。如果有人对我的实际解决方案感兴趣,我会非常愿意分享。

identify name of file on phone AS phoneFile

if phoneFile does NOT exist
    create phoneFile
    retrieveData online and overwrite phoneFile with onlineData
else 
    immediately loadData from phoneFile (allowing app to be functional)
    dispatch asynchronous function (in background while data loads from phoneFile)
    {
        if phoneFile != onlineData
            update phoneFile, overwriting with onlineData
            prompt user requesting to refresh data in application
        else
            do nothing
     }

希望这是有道理的。基本上,我们第一次打开应用程序时手机上没有文件,因此我们等待下载,然后使用该数据运行应用程序。

然后,每次随后,我们打开带有手机数据的应用程序,并在后台检查是否有新的在线数据。我的在线文件只有1KB,因此没有重要的下载,但如果网络连接缓慢或中断,此方法有助于防止应用程序加载缓慢。

另外,我在下面的评论中提到了这一点,但我在这里使用了本教程中的文件保存功能:learncoredata.com/how-to-save-files-to-disk

1 个答案:

答案 0 :(得分:2)

所以如果你有两个文件

let root = NSBundle.mainBundle().resourceURL!
let localURL = root.URLByAppendingPathComponent("LocalFile")
let remoteURL = NSURL(string: "RemoteFile")

let localString = try! String(contentsOfURL: localURL)
let remoteString = try! String(contentsOfURL: remoteURL)

if(localString == remoteString) {
    They are the same
} else {
    Get the remote one and write it in.
}

希望对你有用!