Tôi đã tạo một thư viện tĩnh trong Xcode, mà tôi có thể sử dụng thành công trong các dự án khác. Tuy nhiên, với các tài nguyên như plists, tôi thấy tôi phải bao gồm bất kỳ plists tham chiếu trong thư viện của tôi trong dự án chính, nơi dự án được sử dụng.NSBundle, plist và các tài nguyên khác trong Thư viện tĩnh Obj-c
Trong dự án thư viện tĩnh của tôi, tôi có plist của tôi được bao gồm trong giai đoạn "Sao chép gói tài nguyên" của mục tiêu. Trong mã của tôi, đây là những gì tôi đang làm:
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath = [mainBundle pathForResource:@"MyClassParams" ofType:@"plist"];
NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
Nếu tôi sử dụng mainBundle và MyClassParams.plist được bao gồm trong dự án chính, tất cả là tốt. Nếu MyClassParams.plist được bao gồm trong dự án thư viện, nó không hoạt động.
Trên giả định rằng [NSBundle mainBundle] đã được tham khảo các phương pháp tĩnh sai lầm khi sử dụng, tôi thay thế nó bằng:
NSBundle *mainBundle = [NSBundle bundleForClass:[MyClass class]];
này đã không làm việc một trong hai.
Vì vậy, có thể bao gồm một plist hoặc bất kỳ tài nguyên khác với một thư viện tĩnh - hoặc tôi phải bao gồm bất cứ điều gì tôi cần trong dự án nơi lib được sử dụng?
Bắt đầu một tiền thưởng với câu hỏi - câu trả lời được chấp nhận vẫn chính xác như iOS 4.2? –