2015-01-26 18 views
13

Tôi đã tạo tiện ích mở rộng ngày hôm nay tải xuống các bài viết từ nguồn cấp dữ liệu và hiển thị các bài viết mới nhất. Toàn bộ mọi thứ hoạt động tốt trên iOS 8, vẫn hoạt động trên iOS 8.1, sau đó đến iOS 8.1.2 và chúng tôi bắt đầu có khiếu nại về tiện ích mở rộng ngày hôm nay không hoạt động nữa. tôi đã cố gắng gỡ lỗi trên iOS 8.1.2 thiết bị, và trước khi mở rộng thậm chí khởi động, nó bị treo với lỗi này:Lỗi mở rộng ngày hôm nay trước khi khởi chạy trên iOS 8.1.2

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <__NSConcreteUUID 0x174027280> 5AFB07AB-5DCD-46FE-8D07-44DE0F3789F2)' 

Tôi đã đọc bài này về lỗi thường xuyên xảy ra khi phát triển một phần mở rộng hôm nay: http://www.atomicbird.com/blog/ios-app-extension-tip

trong bài của mình, Tom Harrington nói:

trong iOS 8 (và các phiên bản khác gần đây), cho phép các module trong cài đặt build Xcode của nghĩa là bạn không cần phải liệt kê một cách rõ ràng tất cả các khuôn khổ bạn muốn sử dụng. Chúng sẽ được tìm thấy tự động.

Nhưng đây không phải là trường hợp với NotificationCenter.framework, tiện ích mở rộng Hôm nay sử dụng. Nếu bạn xóa điều đó khỏi cài đặt xây dựng, bạn sẽ không nhận được bất kỳ cảnh báo hoặc lỗi nào trong quá trình xây dựng. Nhưng khi bạn cố gắng tải tiện ích, bạn sẽ nhận được ngoại lệ từ libextension.dylib và tiện ích mở rộng của bạn sẽ không tải. Thông điệp ngoại lệ không phải là khai sáng:

2014-08-16 12: 06: 53,793 TodayTestExtension [41.313: 6.111.763] * Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInvalidArgumentException', lý do: '* setObjectForKey: đối tượng có thể không là nil (key: < __NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0-BCD5-F3DBA6F34DB5) ' Nếu bạn đang thực hiện một phần mở rộng ngày hôm nay, chỉ cần rời khỏi khuôn khổ đó trong cài đặt xây dựng. Nó không cần phải ở đó, nhưng nó có.

phần mở rộng của tôi không bao gồm NotificationCenter.framework trong cài đặt build của nó, nhưng tôi nghi ngờ vấn đề của tôi có thể là tương tự một cách nào đó.

Bất kỳ ai gặp phải sự cố tương tự? Bất kỳ ý tưởng làm thế nào để giải quyết nó?

+0

Wow, điều đó không khuyến khích. Nó trông giống y như vậy, nhưng đó là điều duy nhất tôi biết sẽ gây ra vấn đề này. –

+0

Có phải những khiếu nại này từ người dùng "trong lĩnh vực" hay từ những người đang chạy thử nghiệm các ứng dụng của bạn? Ở nơi đầu tiên nó sẽ là một lỗi 8.1.2 và sẽ không có nhiều bạn có thể làm. Trong lần thứ hai, nó có thể là một vấn đề Xcode có thể khắc phục được. –

Trả lời

0

Cuối cùng tôi đã cố gắng xóa NotificationCenter.framework khỏi mục tiêu của mình và đặt lại, làm sạch dự án và bây giờ nó đang hoạt động trở lại. Tôi đoán khuôn khổ đã không được liên kết đúng cách sau khi tất cả, mặc dù tôi có thể nhìn thấy nó trên mục tiêu của tôi với xcode. Ngoài ra, tôi không thể tìm ra lý do tại sao nó đã làm việc, sau đó ngừng làm việc với sự xuất hiện của 8.1.2.

0

Chỉ gặp vấn đề tương tự. Đối với tôi, đó là thuộc tính "Giao diện chính" trong "Cài đặt chung" của mục tiêu Bàn phím. Nó trống, và tôi đặt nó vào tập tin bảng phân cảnh và bây giờ nó hoạt động như một sự quyến rũ. Screenshot

32

Lỗi này cũng xảy ra nếu bạn sử dụng NSExtensionPrincipalClass bên trong "Info.plist" để xác định lớp cơ sở (thay vì sử dụng bảng phân cảnh) với tên của ViewController không tồn tại.

Khi sử dụng Swift, hãy đảm bảo đặt tiền tố cho lớp có tên mô-đun (thường là tên của đích) như "Module.MyViewController".

+3

Tuyệt vời, đã hoạt động! Sau đó tôi đã đổi thành '$ (PRODUCT_NAME) .', để tăng thêm tính linh hoạt. – user2565077

+0

Bạn đang cứu mạng tôi! – Hilen

+0

Giải pháp này áp dụng cho loại tiện ích _any_. Và phần "Khi sử dụng Swift" là ** quan trọng **. Đừng quên tên mô-đun đó. –

Các vấn đề liên quan