2015-07-31 3 views
0

Я застреваю, и это заставляет меня сходить с ума. У меня есть функция, которая возвращает NSManagedObject:Листинг NSManagedObject для экземпляра класса

let getaccount = AccountModel.getFirst(globals.managedObjectContext) 

, и я должен бросить его в его сгенерированного представления Account

Я сделаю это:

dump("--------------------") 
dump(getaccount) 
dump("--------------------") 
if let acc = getaccount as? Account { 
    print("OK") 
} else { 
    print("not convertable ") 
} 
dump("*********************") 

И выход ИЗ MY UNITTEST выглядит следующим образом:

- -------------------- 
▿ Ticketstream.Account 
    ▿ Some: Coredataexampleapp.Account #0 
    ▿ super: <Coredataexampleapp.Account: 0x138d85f90> (entity: Account; id: 0x1398a9fe0 <x-coredata://06F96EF3-96A6-4C32-A6A2-F16BCB8318EA/Account/p1> ; data: { 
    active = 0; 
    avatar =  (
    ); 
    config =  (
    ); 
    createdAt = "2015-07-31 23:34:58 +0000"; 
    displayName = "My Account (1)"; 
    host = localhost; 
    lastUpdatedDate = "2015-07-31 23:34:58 +0000"; 
    password = nil; 
    port = 8080; 
    schema = HTTPS; 
    username = ""; 
}) 
     - NSObject: <Coredataexampleapp.Account: 0x138d85f90> (entity: Account; id: 0x1398a9fe0 <x-coredata://06F96EF3-96A6-4C32-A6A2-F16BCB8318EA/Account/p1> ; data: { 
    active = 0; 
    avatar =  (
    ); 
    config =  (
    ); 
    createdAt = "2015-07-31 23:34:58 +0000"; 
    displayName = "My Account (1)"; 
    host = localhost; 
    lastUpdatedDate = "2015-07-31 23:34:58 +0000"; 
    password = nil; 
    port = 8080; 
    schema = HTTPS; 
    username = ""; 
}) 
- -------------------- 
not convertable 
- ********************* 

Как отличить NSManagedObject в Учет?

мне это нужно, потому что я не могу получить первый счет иначе:

class func getFirst(context: NSManagedObjectContext) -> NSManagedObject? { 
    let request = NSFetchRequest(entityName: accountEntityName) 
    request.fetchLimit = 1 
    let list: NSArray = try! context.executeFetchRequest(request) 
    return list.firstObject as? NSManagedObject 
} 

Я попытался это с NSManagedObject, AnyObject и счетами ... Как я могу получить первый счет право путь?

UPDATE: В нормальном эксплуатационном режиме: все отлично! Я получаю:

- -------------------- 
OK 
- ********************* 

Но не из моих тестов :-(

Спасибо за вашу помощь, я потерял

+0

Не проблема, что модель управляемых объектов относится к целевой теме приложения, а не к целевой цели? – matt

+0

Я проверил это несколько раз. К сожалению нет. –

+0

@PeterShaw: В этой ветке http://stackoverflow.com/questions/25076276/unable-to-find-specific-subclass-of-nsmanagedobject есть некоторые ответы, связанные с модульным тестированием (например, отметьте подкласс управляемого объекта с помощью '@objc (EntityName). –

ответ

0

Выберите все файлы проекта, в свою очередь, и посмотрите на Inspector File. справа. Убедитесь, что все файлы имеют проект «Тест», проверенный в их целевом членстве.

+0

Все файлы относятся к основной цели и тестовая цель! Даже все сущности принадлежат тестовой цели, тоже –

+0

Хм! Мне было бы любопытно, если бы в любом случае могли быть почерпнуты из lldb в точке останова. Возможно, включите 'po' в' getobject' в свой вопрос – BaseZen

+0

Я буду после нескольких часов сна. Слышал, что он должен работать как чудеса ... –

0

Нет необходимости включать все обычные файлы классов в тестовую цель. Вам просто нужно импортировать основной модуль и все работает как ожидалось.

@testable import AppName 

Это автоматически вставлено в Xcode 7 beta 4. Для проблемы с литьем см. this answer.

Смежные вопросы