2010-10-06 10 views
8

Bu oldukça garip ve ben tüm yardımı çok seviniriz zaman diğer uygulama doc değiştirir düşünmek nedenleriniProgramlı Bunun bazı gerçekleştirmek mümkün olmalıdır belge tabanlı uygulaması var) = yeniden açılıyor dosya

belgeyi kaydedin belge dosyasındaki eylemler. Bunu yapmak için, belge eylemleri her çağrıldığında belgeyi kaydediyorum.

saveDocumentWithDelegate:didSaveSelector:contextInfo:

sorun, yine eylem gerçekleştirme sonra son dosyaları menüsünden yeniden açılması, belgeyi kapatarak ve ne zaman iletişim kutusu ile sunulan ediliyorum söylüyor: yüzden yöntemini kullanıyorum yapmak için Bu, menü öğesi kullanılırken durum böyle değildir.

Ben yöntemlerle tasarruf farklı ile denedim:

saveToURL:ofType:forSaveOperation:error:

Ve bu bir yan etkisi yoktur arıyorum davranış sonuçlanır rağmen: kaydetmek menü öğesi işlemi gerçekleştirdikten sonra devre dışı olur.

Bu yüzden sorum şu: Programlı kaydetme işlemlerini doğru bir şekilde nasıl yapmalıyım? Dokümanlara baktım ama bariz bir çözüm gibi görünen hiçbir şey görmedim.

Tüm yardımlar takdir edilmektedir. Teşekkürler

+1

Bu CoreData tabanlı bir belge uygulaması mı? Açıkça [myManagedObjectContext kaydet: & error] çağırıyorsanız, bu efekti elde edersiniz. –

+0

no CoreData tabanlı bir belge uygulaması değil ... Ayrıca, saveDocument öğesini çağırmayı da denedim: belge nesnesinde ... Aynı efektle (dosyayı yeniden açarken iletişim kutusu) –

+1

Bu davranışı bir Çekirdek Verisinde gördüm Belge tabanlı uygulama da ve kaydetme konusunda özel bir şey yapmadığımı kanıtlayabilir. Tek ortak tema -saveDocument çağırmaktır: belirli eylemler alındıktan sonra belgeyi otomatik kaydetme kullanıcı tercihine bağlı olarak kod içinde. –

cevap

0

İstediğiniz gibi çalışmaya başlamak için, muhtemelen saveToURL: ... yöntemini kullanarak düzeltin ve sonra menü öğesi duracak olan - [NSWindow setDocumentEdited:] veya - [NSDocument updateChangeCount:] öğesini çağırın. engelli olmaktan. Ancak, genel yaklaşımınızın doğru olduğundan emin değilim. Bir menü öğeniz varsa, Lion’un otomatik kaydetme özelliğini (önerilen) kullanmıyorsanız, bu durumda farklı yöntemler çağıracağınız sürece otomatik olarak kaydetmeniz gerektiğini düşünmüyorum.

Ve şimdi sahip olduğunuz gibi otomatik kaydetmeyle uğraşmaya karar verdiyseniz bile, menü öğesinin devre dışı bırakılmasını istemiyorsunuz? Kaydetmek için herhangi bir değişiklik olmadığından devre dışı bırakıldı.

Dosyayı neden otomatik olarak kaydediyorsunuz?

1

Durumumda bu sorun için çözüm buldum. Sorun,yönteminin NSPersistentDocument yönteminin geçersiz kılınmasında seçeneklerdi. Sorun dize

[options setObject:[NSNumber numberWithBool:YES] forKey:NSSQLiteManualVacuumOption] 

ben nedense vakum seçeneği kullanıldığında sildiğinizde çözüldü. Nasıl yapılacağını bilmiyorum ama kurtarmayla ilgili sorun yarattı. Bu seçeneği reddettiğimde sorun ortadan kalktı.

İlgili konular