저는 사용자가 캡션과 제목이있는 이미지를 저장 한 다음 Core Data를 사용하여 저장할 수있는 프로젝트를 진행하고 있습니다. 내가 가진 문제는 사용자가 캡션과 함께 유사한 이미지를 유지할 수있는 앨범을 추가하려고하는 것입니다. 저는 CoreData를 처음 접했고 하루 종일 문서를보고 Stackoverflow를 살펴 보았습니다.
내가 찾고있는 기본 레이아웃의 이미지 (확실히 아티스트가 아님)를 첨부했습니다. 형세
또한 데이터 구조가 어떻게 생겼을 지에 대한 이미지를 첨부했습니다. 데이터 구조
빨간색으로 표시된 부분은 구조화 문제입니다. 나는 이미 데이터 구조의 '최상위'레이어가 될 것이라고 생각하는 것을 구조화했습니다.
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context: NSManagedObjectContext = appDel.managedObjectContext
let saveData = NSEntityDescription.insertNewObjectForEntityForName("ScannedItem", inManagedObjectContext: context)
let imageRep = UIImagePNGRepresentation(image)!
saveData.setValue(textTitle, forKey: "savedTitle")
saveData.setValue(scannedText, forKey: "savedText")
saveData.setValue(imageRep, forKey: "savedImage")
do{
try context.save()
}catch{
print("Failed")
}
더 낮은 수준의 데이터를 추가하려면 어떻게해야합니까? 하나는 문자열 그룹을 포함하고 다른 하나는 이미지 그룹을 보유하는 것입니까?
나는 그것을 몇 시간 동안 구조화하려고 노력해 왔으며 단순히 그것을 알아낼 수 없습니다.
이미지가 내가 요청한 내용에 맥락을 추가 할 수 있기를 바랍니다.
더 낮은 수준의 데이터를 추가하려면 어떻게해야합니까? 하나는 문자열 그룹을 포함하고 다른 하나는 이미지 그룹을 보유하는 것입니까?
문자열 그룹과 별도의 이미지 그룹이 없습니다 (어떤 문자열이 어떤 이미지에 속하는지 어떻게 알 수 있습니까?). ScannedItem
그룹은 당신이해야하므로 개체가 이미 문자열과 이미지 모두를 가지고 Scanned Item
앨범을 만들기 위해 함께 객체.
CoreData 용어로 새 엔터티 인 Album
. 해당 엔티티에는 albumName
또는 a 와 같은 고유 한 속성과 앨범에서 albumDescription
를 나타내는 관계가 있을 수 있습니다 ScannedItems
. Album
는 많은의 모음 이므로 ScannedItems
관계는 "대다"입니다.
CoreData에서 한 엔터티에서 다른 엔터티로의 관계를 정의하는 경우 항상 역 관계도 만들어야합니다. 스스로에게 물어볼 질문은 각각 ScannedItem
이 둘 이상에있을 수 Album
있는가? 그렇다면 역 관계도 "대다"입니다. 그렇지 않은 경우 역은 "일대일"입니다.
기본적으로 CoreData는 대다 관계의 개체 컬렉션을 집합으로 나타냅니다. 이는 두 가지 결과를 가져옵니다.
Album
경우 sortOrder
속성 을 추가하여 정렬 순서를 명시 적으로 모델링해야 할 수 있습니다 . ScannedItem
to 의 관계 Album
가 to-one 이면 충분히 쉽지만 관계가 to-many이면 ScannedItem
하나의 첫 번째 이미지가 될 수 Album
있지만 다른 Album
.Album
는 같은 ScannedItem
것을 두 번 이상 포함 할 수 없습니다 .각각의 솔루션은 동일합니다.에 대한 속성, 대일 관계 및에 대한 대일 관계 가 있는를 호출 할 수 있는 세 번째 엔터티를 만듭니다 . 역 관계는 둘 다 대다 일 수 있습니다 . an 은 많은 것을 가질 수 있고 a 는 또한 많은 .AlbumScanReference
sortOrder
Album
ScannedItem
Album
AlbumScanReferences
ScannedItem
AlbumScanReferences
경우 myScan1
에서 첫 번째 항목이었다 album1
및 일곱 번째 항목이 album2
두 가지를 만들 것입니다 AlbumScanReferences
:
let reference1 = ....
reference1.scannedItem = myScan1
reference1.album = album1
reference1.sortOrder = 1
let reference2 = ....
reference2.scannedItem = myScan1
reference2.album = album2
reference2.sortOrder = 7
마찬가지로 myScan2
에서 두 번째 항목이고 여덟 번째 항목 album1
이면 다음 두 가지가 있습니다 AlbumScanReferences
.
let reference3 = ....
reference3.scannedItem = myScan2
reference3.album = album1
reference3.sortOrder = 2
let reference4 = ....
reference4.scannedItem = myScan2
reference4.album = album1
reference4.sortOrder = 8
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다