I figured out my problem. I had put an object representing the document into the nib where the document was also set as the file's owner, making each document call init twice.

A hard-learned lesson. At least I won't forget it.


On 14/02/2013, at 01:39, stephen horne <fatste@gmail.com> wrote:

I'm making a document-based application, backed by core data, but I'm having serious issues opening the documents again.

I'm trying to use readFromFileWrapper(wrapper, ofType:type, error:err) in an NSDocument subclass.

Through my logging, it seems that this method is doing what it should, but the document that is displayed is not the object that I query inside that method, as can be seen by the two calls to "puts self" in the snippets below.


def readFromFileWrapper(wrapper, ofType:type, error:err)
  url = NSURL.fileURLWithPath(self.fileName).URLByAppendingPathComponent("test.storedata")
  setFileType('SQLite')
  add_persistent_store(url)
  puts crags # This is a method that fetches objects from the sqlite database,
             # and proves to me that the database has been set right. Output below:
             # #<RFCrag_RFCrag_:0x4013323c0>
             # #<RFCrag_RFCrag_:0x4013324c0>
             # #<RFCrag_RFCrag_:0x401332680>
             # #<RFCrag_RFCrag_:0x401334480>
             # #<RFCrag_RFCrag_:0x401334740>
             # #<RFCrag_RFCrag_:0x4013355c0>
             # #<RFCrag_RFCrag_:0x40132f980>
             # #<RFCrag_RFCrag_:0x40132fc80>
             
  puts self  # => #<RFDocument:0x40161bfe0> # Correct I think, this is what I expect
  true
end



This one is called from a "button_press(sender)" method once the opened document is on-screen, but the tableview is not populated. I would expect this to be an RFDocument also.

def button_press(sender)
  puts self  # => #<#<Class:0x40049db20>:0x4013e7680> # Incorrect? Or some funny cocoa-generated subclass maybe?
end



I don't know what this object is, but it doesn't have the persistent store set. Although I can then set it by calling a method from a menu that calls the "add_persistent_store(url)" method, and make the document window display the data.

Am I missing something? I've been banging my head against this one for hours now. Any help is greatly appreciated.
--
Stephen Horne


--
Stephen Horne