2010-07-13 2 views
0

동기화 서비스를 사용하여 데이터를 데스크톱 버전과 동기화하는 iPhone 앱이 있습니다. 이미지를 제외한 모든 것이 잘 작동합니다.iPhone에서 OS X로 동기화 서비스를 사용하여 이미지 동기화

iphone에서 이미지를 Documents Directory에 저장하고 파일의 경로를 코어 데이터에 저장합니다. 나는 일시적인 속성 "이미지"를 설정하고 동기화 확인란을 선택하고 ID 속성으로 지정했습니다. 나는 클라이언트 설명 파일에서 이미지 속성은, 그냥 ZSync 데몬로 전송되는 저장소 파일의 데이터를 둘 것입니다 추가 때문에 나는, 내가 생각

- (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; 
} 

두 가지 방법을 추가,하지만 난 잘못입니다. 그리고 이미지 데이터가 전송되지 않습니다

내 질문에 할 수 있습니까? 또는 이미지 데이터를 동기화하는 가장 좋은 방법은 무엇입니까?

지도 해주세요. 검색하고 검색했지만 해결 방법을 찾지 못했습니다.

당신에게 감사

답변

0

Marcus Zarra's speech on the NSConference의 이미지/이진 데이터 동기화에 대한 질문이 있었다.

기본적으로 이미지가 100k 미만인 경우 객체에 NSData로 직접 넣습니다.

100k 이상에서 1M 이상에서는 데이터를 저장하고 관계에 링크 된 추가 엔티티를 사용합니다.

이상의 내용은 수행중인 것처럼 경로와 데이터를 디스크에 저장합니다.

처음 두 접근 방식 만 zsync를 통한 동기화에서 이점을 얻습니다. 세 번째 단계로 가면 다른 방법으로 상대방에게 데이터를 가져와야합니다.

+0

나는 그것을 알고있다. 그 다른 수단이 – creativeKoder

+0

인 이유를 알고 싶습니다. 왜 진리 DB에있는 이미지 데이터가 일시적인 속성으로 전송되지 않고 iPhone 파일 시스템에 저장되고 pathToFile 속성에 저장되는 경로입니까? – creativeKoder