使用从iPhone到OS X的同步服务同步图像

时间:2010-07-13 01:14:57

标签: iphone sync core-data

我有一个iPhone应用程序,它使用同步服务将其数据与桌面版本同步,一切正常,但图像除外。

在iphone上,我将图像存储在Documents Directory中,并将文件路径存储在核心数据中。我设置了一个瞬态属性“image”并检查了同步复选框并将其指定为标识属性。我添加了两种方法,

- (NSData *)image;
{
  NSLog(@"%@:%s entered", [self class], _cmd);
  if (image) return image;
  NSString *path = [self primitiveValueForKey:@"pathToFile"];
  if (!path) return nil;
  NSString *myPath = [NSHomeDirectory() stringByAppendingPathComponent:path];
  image = [[NSData alloc] initWithContentsOfFile:myPath];
  return image;
}

- (void)setImage:(NSData *)data
{
    NSLog(@"%@:%s entered", [self class], _cmd);
  NSString *destPath = [self primitiveValueForKey:@"pathToFile"];
  if (!destPath) {
  //Build the path we want the file to be at
  destPath = NSHomeDirectory();
  NSString  *guid = [[NSProcessInfo processInfo] globallyUniqueString];
  NSString  *fpath = [NSString stringWithFormat:@"Documents/%@", guid];
  destPath = [destPath stringByAppendingPathComponent:fpath];
  [self setValue:destPath forKey:@"pathToFile"];
  }
  [data writeToFile:destPath atomically:NO];
  [data retain];
  [image release];
  image = data;
}

- (void)willTurnIntoFault
{
  [image release], image = nil;
}

我认为,因为我在客户端描述文件中添加了image属性,它只是将数据放入发送到ZSync守护进程的存储文件中,但我错了。并且不传输图像数据

我的问题是这可以吗?或者同步图像数据的最佳方法是什么?

请给我指导,我已经搜索过,但没有找到任何解决方案。

谢谢

1 个答案:

答案 0 :(得分:0)

Marcus Zarra's speech on the NSConference中有关于图像/二进制数据同步的问题。

基本上:如果图像低于100k,则将其直接放在对象内作为NSData。

高于100k且低于1M时,使用另一个存储数据的实体,并通过关系进行链接。

大约1M存储路径和磁盘上的数据,就像你正在做的那样。

通过zsync同步,只有前两种方法受益。如果你选择第三个,你必须通过其他方式将数据带到另一边。