2015-01-07 2 views
5

ho cercato di caricare una foto per CloudKit, e conservarlo come NSData, ma con un quadro relativamente più grande, scattate con la fotocamera, ottengo questo errore:Come memorizzare una grande immagine in CloudKit?

Error saving record <CKRecordID: 0x15998770; 04359DFA-8370-4000-9F53-5694FC53FA9C:(_defaultZone:__defaultOwner__)> to server: record too large id=04359DFA-8370-4000-9F53-5694FC53FA9C of type UserSetting 

Qual è la dimensione massima dei dati è in grado di store in CloudKit?

Come si memorizzano le immagini grandi scattate con la fotocamera in CloudKit?

Ho provato con due immagini e ne ho calcolato le dimensioni.

let d = UIImagePNGRepresentation(image) 
println("d.length: \(d.length)") 
  • d.length: 55482 < - Lavori
  • d.length: 17614327 < - non funziona

risposta

8

funzione consente di memorizzare immagini come CKAsset. Per un CKRecord c'è una limitazione di dimensioni. Per un CKAsset non esiste (oltre alle limitazioni di archiviazione di CloudKit). Secondo la documentazione:

Use assets for discrete data files. When you want to associate images or other discrete files with a record, use a CKAsset object to do so. The total size of a record’s data is limited to 1 MB though assets do not count against that limit.

È possibile creare un CKAsset come questo:

var File : CKAsset = CKAsset(fileURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("image-not-available", ofType: "jpg")!)) 
+2

Da [Apple] (https://developer.apple.com/library/prerelease/ios/documentation/CloudKit /Reference/CKAsset_class/index.html): * I file oi dati salvati utilizzando un oggetto oggetto non devono essere maggiori di 250 MB. * – Mojo66

+0

Esiste un modo per creare un URL da un'immagine? Ho l'utente scegliere tra fare clic sull'immagine all'interno dell'app o utilizzare un UIImagePickerController. – penatheboss