Her ikisi de CloudKit
ve Core Data
kullanarak görüntüleri kaydedip alacak olan Swift ile bir uygulama oluşturmaya çalışıyorum. CloudKit ile görüntüyü CKAsset
olarak kaydedeceğim ve Core Data
ile görüntüyü belgeler dizinine kaydedip yol adını Core Data
'da saklayacağım. Uygulamam yüklenmeye başladığında, önce yerel olarak depolanan öğeleri arar, ardından yerel veriler saklanmazsa bulutu kontrol eder (çok fazla yükleme süresi kaydeder). Her neyse, görüntüleri CloudKit
'dan yüklediğimde, bunlar iyi ve Core Data
için de geçerli oluyor ve belge dizini yolu çoğu zaman. Görüntülerin Core Data
içinde yol adlarını kullanarak yüklendiğinde bu problemi düzenli olarak fark ettim, aslında görüntü yalnızca kısmen geri geliyor, bir kısmı yolun% 85'ini ya da bir şeyleri çizmeyi bırakmış gibi grileşiyor. İyi bir örnek bulmak zordur, çünkü her zaman olmaz, ama benim kedimden bulabildiğim en iyisi: Temel Verilerde Belgeler Dizini'nden Görüntü Yolunu Kaydetme, Yalnızca Kısmi Görüntü Alma. Swift
Üstteki görüntünün yaklaşık% 15'inin sadece gri olduğunu görün ? Hiçbir zaman görüntünün herhangi bir parçasına lokalize edilmez, üstte, solda, sağda, altta hatta ortada olur. Ve söylediğim gibi hiç de kronik bir sorun değil. İşte benim kod Core Data
yol adını belgeler dizininde görüntü saklamak ve kaydetmek için kullanılır:
// Make the unique path for the Image Name and save it
let userImageName:String = "savedUserImage\(indexForImageName).jpg"
let imagePath = saveInDocumentsDirectory(userImageName)
// Save the game's reference image in the documents directory
self.saveImage(user.referenceImage, path: imagePath)
func saveImage (image: UIImage, path: String) {
let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
jpgImageData?.writeToFile(path, atomically: true)
}
func documentDirectoryURL() -> NSURL {
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
return documentsURL
}
func saveInDocumentsDirectory(filename: String) -> String {
let fileURL = documentDirectoryURL().URLByAppendingPathComponent(filename)
return fileURL.path!
}
Sonra Uygulamayı daha sonra yükleme üzerine, burada benim resim yolu adlarını almak için kullandıkları kod ve sonra belgeler dizinden resim getirirseniz:
if let image = newUser.imageName {
let imagePath = saveInDocumentsDirectory(image)
if let loadedImage = loadImageFromPath(imagePath) {
user.referenceImage = loadedImage
} else { self.customDelegate.alertUserErrorLoadingImage() }
}
func loadImageFromPath(path: String) -> UIImage? {
let image = UIImage(contentsOfFile: path)
if image == nil {
self.customDelegate.alertUserErrorLoadingImage()
}
return image
}
herkes bu oluyor neden olarak bu sorunu, hatta bir fikir düzeltme hakkında herhangi iyi fikirler varsa, ben çok iyi olur. İlk düşüncem, CloudKit
ve Core Data
kullanıyorum bu yana, belki de bir noktada benim uygulama CloudKit
ile eşzamansız olarak yükleme sırasında bir görüntü kaydediyor ve sonra nasıl bir şekilde kesiliyor ... ama nasıl Her zaman olmamalı diye programladı. Bunun yaygın bir sorun olup olmadığını, ya da başka birinin tecrübe edip etmediğini merak ediyorum. Şimdiden teşekkür ederim!
Buna bir çözüm buldunuz mu? Aynı şeyi bildirim uzantılarında görüyorum. –
Hey Sam. Bu problem için hala bir çözüm bulamadım. Daha az olsa da gerçekleştiğini fark ettim. Tüm Temel Veri işlemlerini zaman uyumsuz olarak yapmam gerekti ve şimdi nadiren oluyor, ama evet yine de oluyor. Sadece etrafta çalışıyorum ama hala beni çıldırtıyor. – Pierce