Zaten How do I create a global UIManagedDocument instance per document-on-disk shared by my whole application using blocks? bir göz attım ama gerçekten anlamıyorum.Bir UIManagedDocument'i farklı nesneler arasında nasıl paylaşırım?
Elde etmek istediğim, tüm uygulama için yalnızca bir UIManagedDocument - bir çekirdek veri veritabanı olması gerektiğidir. Farklı Nesneler bir yöntemi çağırmalı ve tek UIManagedDocument dosyasını almalıdır.
Bir sınıf yöntemi ile bir yardımcı sınıf kullanın: Eğer soru işaretleri de görebileceğiniz gibi
+ (UIManagedDocument *)getsharedDatabase:(NSString *)databaseName
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:databaseName];
// url is now "<Documents Directory>/<databaseName>"
if (![[NSFileManager defaultManager] fileExistsAtPath:[url absoluteString]])
{
// does not exist on disk, so create one
UIManagedDocument *managedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
return managedDocument;
}
else
{
UIManagedDocument *managedDocument = **?????**
return managedDocument;
}
}
, ben Mevcut dosyayı nasıl bilmiyorum. UIManagedDocument sınıfı başvurusunu kontrol ettim, ancak bulamadım.
Yardım edebilir misiniz, lütfen? Çok teşekkürler şimdiden. ne tekil yöntemi hakkında gibi merak ediyorum
DÜZENLEME ...: Eğer diskte UIManagedDocuments mevcut varsa
+ (UIManagedDocument *) sharedDatabase
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"databaseName"];
// url is now "<Documents Directory>/databaseName"
static UIManagedDocument *managedDocument = nil;
static dispatch_once_t mngddoc;
dispatch_once(&mngddoc, ^{
managedDocument = [[UIManagedDocument alloc] initWithFileURL:url];
});
return managedDocument;
}
sizin tekil yöntem gitmek için yol gibi görünüyor. optimize etmek için url oluşturma kodunu dispatch_once içine taşıyabilirsiniz. – Felix
Kredi, vadesi geldiğinde kredi vermek için çok teşekkür ederim, Colin Wheeler benim ilham kaynağımdı - http://stackoverflow.com/a/2200751/1096476 – uem