Tôi muốn sử dụng Swift để xây dựng một plugin PX Preference Pane cho ứng dụng System Preferences, nhưng tôi không thể làm cho nó hoạt động.Sử dụng Swift với plugin OS X Preference Pane plugin
Sau khi nhấp "Next" mẫu Xcode không cung cấp một tùy chọn để chọn Swift như một ngôn ngữ, nhưng tự động tạo ra các dự án trong Objective-C.
Nếu không có thêm bất kỳ mã hoặc làm bất cứ điều gì khác, dự án xây dựng thành công. Nếu bạn nhấp chuột phải vào Sản phẩm và chọn "Mở trong Trình chỉnh sửa bên ngoài", Tùy chọn hệ thống sẽ cài đặt thành công và tải ngăn tùy chọn.
Nó chỉ hoạt động!
Điều đó thật tuyệt, nhưng bây giờ, tôi muốn thêm lớp con Cocoa mới bằng Swift.
Chấp nhận mặc định, và cho phép nó để tạo ra các Bridging Header.
Bây giờ, bỏ System Preferences và mà không cần thêm bất kỳ mã, xây dựng lại dự án. Như trước đây, nhấp chuột phải vào Sản phẩm và "Mở trong Trình chỉnh sửa bên ngoài".
Tùy chọn hệ thống sẽ xác nhận thay thế ngăn tùy chọn và cài đặt, nhưng không tải được.
Nếu bạn hiển thị các sản phẩm xây dựng trong Finder, ngoài các plugin .prefPane, cũng có một thư mục .swiftmodule.
Tôi đoán có điều gì đó mất tích trong giai đoạn xây dựng hoặc xây dựng Cài đặt đó là chịu trách nhiệm về kết hợp .swiftmodule với phần còn lại của bó, nhưng đã không thể để con nó ra.
Sau khi bạn thêm một số mã sử dụng lớp mới, cần nhập tiêu đề ô dự án Swift ("Prax-Swift.h") để biên dịch dự án, nhưng nhập tiêu đề ô không sửa lỗi này vấn đề.
// Prax.h
#import <PreferencePanes/PreferencePanes.h>
#import "Prax-Swift.h"
@interface Prax : NSPreferencePane
@property PraxObject *ourPrax;
- (void)mainViewDidLoad;
@end
Tôi cũng đã thử xóa Prax.h và Prax.m và chỉ cần triển khai lớp con NSPreferencePane trong Swift. Như trước đây, dự án xây dựng và cài đặt, nhưng System Preferences không tải được.
// Prax.swift
import PreferencePanes
class Prax: NSPreferencePane {
override func mainViewDidLoad() {
}
}
Xin lỗi nếu tôi đã sử dụng quá nhiều ảnh trong câu hỏi này; nó dường như là cách rõ ràng nhất để giải thích vấn đề và làm cho nó dễ tái tạo. Có lẽ có một giải pháp đơn giản. Bất kỳ ý tưởng?
Bạn đã xem ứng dụng Console chưa? Rất có thể bạn sẽ tìm thấy một thông báo lỗi ở đó. – zneak
Không, không có thông báo lỗi hiển thị trong Bảng điều khiển. Có các thông báo hoạt động của Tùy chọn hệ thống, phản ánh "Hiển thị tất cả" và các khay tùy chọn khác được truy cập, nhưng không có thông tin nào không tải được. Tôi sẽ không mong đợi nó đưa ra nhiều đầu mối về vấn đề này, vì có vẻ như là một thứ gì đó về Xcode không xây dựng gói plugin một cách chính xác. – ElmerCat