2015-01-31 6 views
0

일부 핵심 데이터 앱을 연속성으로 업데이트하려고 시도하고 userInfo 사전에서 선택된 객체 ID를 사용하여 문제를 해결하기 위해 올바른 데이터를 계속되는 장치.코어 데이터 objectID를 전달하고 연속성과 함께 사용하는 방법

첫 번째 생각은 ObjectID를 사용하는 것이었지만 수신 장치에서는 코어 데이터 저장소에서 해당 개체를 찾지 못했습니다.

objectID의 URL 표현에는 저장소 자체의 UUID가 포함되어 있으며 두 저장소 UUID가 다르므로이 작업은 분명 실패 할 것입니다.

그래서 코어 데이터 저장소의 UUID를 URL의 대체 장치 UUID로 바꿔서 사용할 수 있으며 의심의 여지없이 작동 할 것입니다.

URL은 다음과 같은 형식이 될 것으로 보인다

사람이 올바른 방법은 아이 클라우드를 통해 동기화 핵심 데이터 저장소와 두 장치 사이의 개체에 대한 참조를 전달하는 것이 무엇인지 알고 있나요?

답변

0

나는이 하나를 자신에 답하고 더 좋은 답변이 있는지 ...

내가 ( objectID.URIRepresentation에서)을 objectIDurl 통과 연속성 API를 사용하여 수신 장치에 사용하여 새 URL을 만듭니다 다음 :

urlNSUserActivity.userInfo 사전에 전달 된 URL입니다

let storeUUID = self.identifierForStore() 

// Switch the host component to be the local storeUUID 
let newURL = NSURL(scheme: url.scheme!, host: storeUUID, path: url.path!) 


func identifierForStore()->NSString? { 
    if let store = self.persistentStoreCoordinator?.persistentStores[0] as? NSPersistentStore {   
     return store.identifier 
    } else { 
     return nil 
    } 
} 

이 잘 작동하는 것 같다 - 그것은 도움이 희망 s 누군가

+0

이 방법이 효과가있는 것처럼 보일 수 있지만 개체 식별자가 두 영구 저장소에서 일치하지 않을 수 있습니다. 하나의 장치는 식별자에 대해 p1을 가질 수 있고 다른 장치는 p4, p2, p3 등과 전혀 다른 것을 가질 수 있습니다. – Chad