在设备之间共享数据(Swift)

时间:2015-07-18 12:13:24

标签: ios swift nsuserdefaults sync

我正在使用Swift尝试在多个Apple设备上共享字符串。它是所有设备(iPad,iPhone和Mac)上的相同应用程序,但我试图获得它,所以我可以在所有设备上有字符串并在更改时更新它,所以基本上'同步'字符串。

我现在尝试使用NSUserDefaults并将其保存到列表中,然后在应用程序启动时检索它,但是我遇到了一些麻烦,因为我关注的代码是在Objective-c而且我是不善于翻译代码。我已经将代码放在下面,以便您可以翻译它。

代码:

//On one device:
NSDictionary *dict = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];

//on the other:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
for (NSString *key in dictionaryRepresentation.allKeys) {
    id ob = dictionaryRepresentation[key];
    [defaults setObject:ob forKey:key];
}

如果您无法翻译它,您是否有更好的方法可以使用Swift免费在多个设备上同步字符串?

提前致谢!

2 个答案:

答案 0 :(得分:1)

NSUserDefaults不会跨设备共享。它是应用程序的每个副本的本地。您可以在@bobnoble的评论中使用NSUbiquitousKeyValueStore和iCloud,但这可能需要10秒到几分钟才能传播。

如果您希望它速度快,我建议您在应用之间建立BLE(蓝牙低功耗)链接。发送设备将发送BLE"广告"并且接收设备将监听该广告。这会很快,但仅限于BLE范围。

请注意,编写BLE是非常低级的东西。

答案 1 :(得分:0)

嗯,这段代码的翻译如下:

//On one device:

let dict = NSUserDefaults.standardUserDefaults().dictionaryRepresentation()

//on the other:
let defaults = NSUserDefaults.standardUserDefaults()
for key : NSString in dictionaryRepresentation.allKeys {
    let ob = dictionaryRepresentation[key]
    defaults.setObject(ob, forKey:key)
}