我想要做的是通过蓝牙从一个iPad到另一个iPad之间交换数据。我的情况的简短摘要,我有每个plist填写每个iPad的字典,它有点像这样:
iPad1将拥有:MAINdictionary(dictionary1(dictionaryA,dictionaryB,dictionaryC),dictionary2(dictionaryD,dictionaryE,dictionaryF))
iPad2将拥有:MAINdictionary(dictionary1(dictionaryG,dictionaryH,dictionaryI),dictionary2(dictionaryJ,dictionaryK,dictionaryL))
括号表示字典包含括号内的项目。我希望我的最终结果是两个iPad都是彼此的克隆,并包含一个包含所有数据的更新列表:
MAINdictionary(dictionary1(dictionaryA,dictionaryB,dictionaryC,dictionaryG,dictionaryH,dictionaryI),dictionary2(dictionaryD,dictionaryE,dictionaryF,dictionaryJ,dictionaryK,dictionaryL))
我很有可能编写解决方案代码,我很难提出一个策略。我是Core Data的新手,所以如果可以的话,请稍微关注一下。
答案 0 :(得分:1)
查看Apple的BTLE Transfer示例代码。它只能在一个方向上共享,但如果需要,您可以轻松扩展它以执行两个方向。
另外,如果您只是想通过蓝牙合并字典,我认为您不需要核心数据!
答案 1 :(得分:0)
使用核心蓝牙:
在外围方面的适当方法(即peripheralManager:didReceiveReadRequest :)
NSError *error = nil;
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:anObject forKey:@"key"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
if (error) {
//respond to error appropriately
}
request.value = jsonData;
[peripheral respondToRequest:request withResult:CBATTErrorSuccess];
在适当的方法中的中央一侧(即外围设备:didUpdateValueForCharacteristic:error :)
NSError *error = nil;
NSData *jsonDataFromPeripheral = characteristic.value;
NSDictionary *theDictionary = [NSJSONSerialization JSONObjectWithData: jsonDataFromPeripheral options: NSJSONReadingAllowFragments error:&error];
if ([theDictionary objectForKey:@"key"]) {
NSLog(@"Success!");
}
如果您想将数据发送到外围设备,那么您可以写入发现的特征,如下所示:
NSError *error = nil;
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:anObject forKey:@"key"];
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];
[peripheral writeValue:jsonData forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
确保设置外围设备的特性,以便执行读写操作。您在创建CBMutableCharacteristic时执行此操作。这是一个例子:
CBMutableCharacteristic *characterisitic = [[CBMutableCharacteristic alloc]initWithType:[CBUUID UUIDWithString:CHARACTERISTIC_STRING] properties:CBCharacteristicPropertyRead|CBCharacteristicPropertyWrite value:nil permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable];
请注意,如果您希望中心实现读写操作,则无需为外围设备服务创建单独的特性。