Создание UIManagedDocument в Swift Playground — ошибка сигнала SIGABRT

Я новичок в программировании и пытаюсь создать свое первое приложение.

Я пытаюсь создать UIManagedDocument, используя Swift Playgrounds, следуя шагам, описанным в прошлогоднем курсе CS193 Standford iOS, лекция 12. Они находятся в задаче C, и я пытаюсь преобразовать их в Swift. Я весь день бился головой о стену, пытаясь понять, что я делаю не так :/

import UIKit
import CoreData


let fileManager = NSFileManager.defaultManager()
let directoryArray = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let directoryUrl = directoryArray[0] as NSURL
let documentName = "MyDocument"
let url:NSURL = directoryUrl.URLByAppendingPathComponent(documentName)
var document = UIManagedDocument(fileURL: url)
var path:NSString = url.path!
println(path)

let context:NSManagedObjectContext = document.managedObjectContext

//document.openWithCompletionHandler(nil)


var fileExists = fileManager.fileExistsAtPath(path)

document.fileURL


document.saveToURL(url, forSaveOperation: UIDocumentSaveOperation.ForCreating, completionHandler: nil)

Я получаю сообщение об ошибке «Выполнение было прервано, причина: сигнал SIGABRT». Вывод консоли, похоже, указывает на проблему с созданным мной URL-адресом или на то, что он нулевой, но я не уверен, почему это так.

/var/folders/tc/9f9rjh1d0pn2r1qbg4qhqbqw0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-CB14C6DC-51ED-4C53-987E-4616DD3A09FA/Documents/MyDocument
2014-09-30 20:50:18.648 MyPlayground[11196:3191065] failed to get type for URL (file:///var/folders/tc/9f9rjh1d0pn2r1qbg4qhqbqw0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-CB14C6DC-51ED-4C53-987E-4616DD3A09FA/Documents/MyDocument) error: The operation couldn’t be completed. (Cocoa error 260.)
2014-09-30 20:50:18.648 MyPlayground[11196:3191065] failed to get type for URL (file:///var/folders/tc/9f9rjh1d0pn2r1qbg4qhqbqw0000gn/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-CB14C6DC-51ED-4C53-987E-4616DD3A09FA/Documents/MyDocument) error: The operation couldn’t be completed. (Cocoa error 260.)
2014-09-30 20:50:18.649 MyPlayground[11196:3191065] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL URLByAppendingPathExtension:]: component, components, or pathExtension cannot be nil.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001016bf3f5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x00000001031cabb7 objc_exception_throw + 45
    2   CoreFoundation                      0x00000001016bf32d +[NSException raise:format:] + 205
    3   Foundation                          0x00000001010ef39f -[NSURL(NSURLPathUtilities) URLByAppendingPathExtension:] + 78
    4   UIKit                               0x000000010201240d -[UIDocument saveToURL:forSaveOperation:completionHandler:] + 151
    5   ???                                 0x000000010cf2904c 0x0 + 4512190540
)
libc++abi.dylib: terminating with uncaught exception of type NSException

на игровой площадке мне кажется, что URL-адрес, который я создал, не равен нулю, поэтому я действительно потерян.

Буду ОЧЕНЬ признателен за любую помощь или совет :) Большое спасибо!


person TaeVitae    schedule 30.09.2014    source источник


Ответы (1)


В этом примере UIManagedDocument не имеет конфигурации модели, которую он может передать в постоянное хранилище. В документации для UIManagedDocument говорится: «Затем объект документа создает стек основных данных для использования для доступа к постоянному хранилищу документа с использованием управляемой объектной модели из основного пакета приложения». Но в этом случае нет основного комплекта и не может быть найдена объектная модель. Вы можете построить все это внутри игровой площадки, но я не уверен, как это сделать. Так что это может быть просто ограничение игровой площадки, которое не позволит вам попробовать это там.

person DataJock    schedule 16.11.2014