0

내 사용자 기본값에 저장된 NSURL에서 관리 객체를 검색 및 생성하려고하지만 managedObjectIDForURIRepresentation-function을 사용하는 방법을 알 수 없습니다. 내 코드는 다음과 같습니다.NSURL을 사용하여 관리 객체 ID 가져 오기

func setCoreData(){ 
    let defaults = NSUserDefaults.standardUserDefaults() 
    let usedKeyName = "timerList" 
    let usedList = defaults.objectForKey(usedKeyName) as? [NSURL] ?? [] 
    let url:NSURL = usedList[0] as NSURL 

    let managedobject:NSManagedObjectID = //What do I write here? 

} 

모든 의견을 환영합니다.

+0

, 나쁜 생각이 될 수 있습니다

NSManagedObjectID objectId = [[managedObjectContext persistentStoreCoordinator] managedObjectIDForURIRepresentation:uri]; 

또는 SWIFT에

애플리케이션 실행 전반에 걸쳐 안정적이다. http://stackoverflow.com/questions/12218396/permanent-nsmanagedobjectid-not-so-permanent를 비교하십시오. –

+0

@MartinR 당신은 내 데이터를 사용자 정의 셀의 타이머가 완료 될 때 업데이트하는 것에 대한 나의 질문에 오늘 일찍 기고했습니다. 그리고이 질문에 대한 연속입니다. 당신은이 문제를 해결할 지식이 있으므로 물어 봅니다 : 객체에 프로세스 정보를 추가해야합니까? 그렇다면이 작업은 어떻게 수행됩니까? 그리고 마지막으로 셀 안의이 고유 한 프로세스 정보에 대한 참조를 저장할 수없는 경우 핵심 데이터 모델을 업데이트 할 때 검색 할 항목을 알 수 있도록 어디서 어떻게 저장할 수 있습니까? – martin

+1

@ frank21이 (상대적으로) 안전한 URI 표현을 유지하고있는 것처럼 보입니다. – quellish

답변

4

URI 표현에서 NSManagedObjectID을 얻으려면 NSManagedObjectContext 또는 NSPersistentStoreCoordinator-managedObjectIDForURIRepresentation:에서 적절한 방법을 호출해야합니다.

URI 표현에는 개체를 유지하는 데 사용 된 저장소의 UUID가 포함됩니다. managedObjectIDForURIRepresentation:을 호출하면 핵심 데이터가 해당 정보를 기반으로 올바른 저장소를 찾은 다음 나머지 URI를 사용하여 해당 특정 개체를 찾을 수 있습니다. 이 때문에 상점의 UUID가 시작할 때마다 변경되지 않도록하십시오. 코어 데이터가 URI 표현과 연관된 데이터를 찾을 수 없으면 managedObjectIDForURIRepresentation:은 nil을 리턴합니다.

그래서, 예를 들어, 당신이 뭔가를 할 것이다 :이 보장되지 않기 때문에 사용자의 기본 설정에 ObjectId가 저장

let objectId:NSManagedObjectID = persistentStoreCoordinator.managedObjectIDForURIRepresentation(uri)