Я возобновил программирование в objc, и я бродил, как я могу использовать код python в существующем приложении objc. Я нашел некоторые темы на этом сайте и некоторые другие, но они не помогли мне вообще. Я хочу сделать SpotlightAPI, найденный в apple's developer website, и использовать результаты для их обработки с помощью кода python. До сих пор я сделал следующее:
1. скачал SpotlightAPI из яблока
2. создал новый проект на основе шаблона приложения какао-питона от PyObjc
3. добавил файлы контроллера из SpotlightAPI в PyObjC
4 Конфигурировали привязки так же, как в SpotlightAPI
5. Выполнено выполнение программы и все работает успешно
6. Создал новый файл класса python, который наследуется от NSObject (python.py)
7. Файл python имеет следующее код:
python и objc мост в существующем приложении
from Foundation import *
import objc
NSObject = objc.lookUpClass(u"NSObject")
print "PYTHON VERSION BEING USED:"
class Python(NSObject):
def sendit_(self, something):
print something
return "asdf"
8. Я Поставлен этот код в начало файла Controller.m:
@class Python;
@interface NSObject (MethodsThatReallyDoExist)
-(NSString *) sendit: (id) aString;
@end
@implementation Controller
- (id)init
{
self = [super init];
Class pythonClass = NSClassFromString(@"Python");
myPython = [pythonClass new];
NSLog(@"Created PythonClass: %@", myPython);
NSString * oneString = [myPython sendit:@"asdf"];
NSLog(@"%@", oneString);
return self;
}
9. добавленным id *myPython;
в объявлениях переменных в controller.h файл
10. реализован метод sendit в controller.m файл, как это:
- (NSString *) sendit:(id) aString
{
return [myPython sendit:aString];
}
компилируется и работает успешно, но сообщение консоли я получаю от функции инициализации является: Created PythonClass: (null)
, а также возврат строки следующего журнала: (null)
Кто-нибудь знает, что я делаю неправильно?