Реализация подкласса PyObjc NsObject

1

У меня есть проект Objc-C, в котором я хотел бы обрабатывать некоторые данные через Python. Для этого я решил реализовать подкласс PyObjc NSObject, который я бы затем связал с моими классами Obj-C через конструктор интерфейса.

Я добавил фреймворк Python в свой проект и файл python со следующим простым кодом:

import objc
from Foundation import *
from AppKit import *

class PythonWrapper(NSObject):
    def applicationDidFinishLaunching_(self, sender):
        NSLog("Application did finish launching.")

Я создал экземпляр PythonWrapper в своем XIB (строитель автоматически узнал его имя). Но при создании, даже не связав его уже с другими классами, я получаю следующую проблему:

Игнорирование файла /Developer/SDKs/MacOSX 10.6.sdk/Library/Frameworks//Python.framework/Python, отсутствие требуемой архитектуры x86_64 в файле

Кроме того, журнал xCode также показывает:

Неизвестный класс 'PythonWrapper', используя вместо этого 'NSObject'. Обнаружен в файле Interface Builder по пути /Users/joao/Library/Developer/Xcode/DerivedData/Jalioneiro -ekjwzbkqqgpyekadkyebhgdsjcxo/Build/Products/Debug/Jalioneiro.app/Contents/Resources/en.lproj/Interface.nib.

Что мне здесь не хватает? Есть ли другой способ связать код python с моими классами Obj-C?

Примечание: Я работаю над xCode4

Теги:
xcode
cocoa
pyobjc

1 ответ

0

Я слышал, что Xcode 4 не играет так хорошо с PyObjC, но я все еще использую 3, поэтому я не могу быть уверен.

Причиной вашей второй ошибки (и это укусит меня все время) является то, что вам нужно импортировать свои пользовательские классы в свой проект main.py:

#import modules required by application
import objc
import Foundation
import AppKit

from PyObjCTools import AppHelper

# import modules containing classes required to start application and load MainMenu.nib
import MyAppDelegate
import MyCustomView
import MyArrayController

# pass control to AppKit
AppHelper.runEventLoop()

Первая ошибка выглядит так, будто вы пытаетесь создать приложение с 64-разрядной версией. PyObjC, который поставляется с Snow Leopard, только скомпилирован как 32-разрядный (фактически, я думаю, что то же самое относится к Python по умолчанию). Попробуйте переключить свою архитектуру построения цели на 32-разрядный или 32/64-разрядный Universal. Вы также можете пойти по пути повторной компиляции PyObjC и включить его в свой пакет приложений - сами не пробовали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню