我正在使用Xcode 4开发自己的框架,我在两个示例应用程序(一个控制台和Mac OS X Cocoa应用程序)中使用它.
我正在尝试向框架添加本地化,所以我创建了两个版本的Localizable.strings文件(en和fr版本),但每次我尝试从示例应用程序打印本地化字符串时,我只会获得其技术名称.例如,在框架代码中包含以下行:
NSLog(NSLocalizedString(@"LOC_TEST", nil));
Run Code Online (Sandbox Code Playgroud)
我只"LOC_TEST"在输出中显示...
然而,本地化与Cocoa应用程序本身一起工作正常(意味着Cocoa应用程序的本地化字符串被正确显示).
在本文之后,我尝试在框架的plist文件中添加本地化:
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>fr</string>
</array>
Run Code Online (Sandbox Code Playgroud)
但它没有改变任何东西......
我错过了什么?
在马拉松编码会话之后,我添加了太多代码而没有跟踪所有内容,我现在有一个应用程序,可能有一些iOS 5.0和5.1特定的枚举,调用和框架,但是,我希望我的应用程序支持iOS回到4.3 .
我希望有一种简单的方法可以将Xcode设置为编译,就好像它正在编译iOS 4.3一样,这样我就会得到所有需要调整的违规代码的错误,和/或者可选择编码的iOS版.
我以为我会通过使用编译器选项得到它:
-D__IPHONE_OS_VERSION_MAX_ALLOWED=__IPHONE_4_3
Run Code Online (Sandbox Code Playgroud)
但最终会在系统头文件中产生错误,而不是我的代码.
鉴于大多数枚举和框架都将其可用性包含在头文件中,我不得不认为有一种简单的方法可以满足我的需求.
有没有人设法做这样的事情,而不是使用旧的SDK下载旧的Xcodes?在那里,我可能会遇到在Lion下无法正常运行的Xcodes问题(这就是我正在运行的).
更新:好像我无法在Lion上安装Xcode 3.2.6.我现在必须找到Snow Leopard Mac,除非我找到使用编译器选项或强制Xcode使用旧SDK的方法......
以下是@ mattjgalloway的答案为我做的一个示例:
Lumin App Group
/Users/mz/Dev/Working/Lumin/Lumin/MyUIScreen.m
/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController+Share.m
/Users/mz/Dev/Working/Lumin/Lumin/LuminViewController.m
非常好.
我将以下内容放在项目的.pch文件中,并计划对所有项目执行此操作:
#if DEBUG
#define __IPHONE_OS_VERSION_SOFT_MAX_REQUIRED __IPHONE_OS_VERSION_MIN_REQUIRED
#import "MJGAvailability.h"
#endif
Run Code Online (Sandbox Code Playgroud)
对于任何项目,我现在都会根据我目标最早的iOS自动查看SDK问题.虽然仍然可能有SDK更改,但我至少知道大多数旧版iOS发布的框架添加内容.
我有一个在xib中绘制的UICollectionViewCell,并伴有swift类文件.这两个文件是我的应用程序的UI框架目标(称为SomeUI)的一部分.
在我的集合视图的视图控制器中(在app目标中),我将nib注册为集合视图单元格.我的视图控制器代码如下;
import UIKit
import SomeUI
let reuseIdentifier = "Cell"
class ACollectionViewController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView.registerNib(UINib(nibName: "JamesTheCollectionViewCell", bundle: NSBundle(identifier: "SomeUI")), forCellWithReuseIdentifier: reuseIdentifier)
}
override func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as JamesTheCollectionViewCell
cell.titleLabel.text = "yippee"
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
在nib中,单元格视图已正确设置其自定义类; JamesTheCollectionViewCell在模块SomeUI中.

虽然Xcode似乎对这个设置很满意,但是在运行时我得到一个错误,因为找不到JamesTheCollectionView.swift中定义的类.
Interface Builder文件中的未知类_TtC19collectionViewThing26JamesTheCollectionViewCell. …
我需要为我们计划在组织中的多个iOS项目中使用的共享公共实用程序集创建一个框架.实用程序类是用swift编写的,框架需要支持iOS 7及更高版本的项目.我正在使用Xcode 6.1.1.
我尝试创建一个'Cocoa Touch Framework'和'Cocoa Touch Static Library',似乎无法让它适用于iOS 7版本.
使用'Cocoa Touch Framework',我收到一条警告,'嵌入式dylibs /框架仅在iOS 8或更高版本上运行',虽然我可以让它运行,但在iTunesconnect步骤中它失败了,错误是项目的部署目标不能小于8.0(我的是7.0).
我尝试使用'Cocoa Touch Static Library'并使用http://www.raywenderlich.com/65964/create-a-framework-for-ios中给出的步骤,但它只是不使用swift文件构建.当我删除所有swift文件并添加Obj-C文件时,它可以正常工作.
任何帮助是极大的赞赏.如何为支持iOS 7+的swift项目创建框架?
谢谢
这是最奇怪的问题,只发生在npm模块中的一个iOS框架上(我注意到).
当点击框架(在npm发布之前)时,我看到:
frameworkname.framework
|
- Headers (dir)
- frameworkname
- Versions (dir)
|
-A (dir)
-Current (dir)
Run Code Online (Sandbox Code Playgroud)
我将此模块发布到私有npm服务器.当我安装npm模块时,框架已损坏.我知道了:
frameworkname.framework
|
- Headers (dir) MISSING
- frameworkname MISSING
- Versions (dir)
|
-A (dir)
-Current (dir) MISSING
Run Code Online (Sandbox Code Playgroud)
阅读http://www.raywenderlich.com/65964/create-a-framework-for-ios后,看起来丢失的文件是符号链接.有没有其他人见过这种行为?如何防止符号链接在npm过程中丢失?
我正面临一个问题,并搜索了很多但没有找到任何解决方案.
我创建了一个使用MQTTKit的Swift框架,"我使用它添加到我的框架中CocoaPods.
现在我创建了一个将使用上述框架的示例应用程序.
然后我创建了一个工作区,并将xcodeproj文件framework以及示例应用程序添加到工作区.
但现在我无法framework在我的示例应用程序中使用它.
我收到错误没有这样的模块MQTTKit在我的内部framework.
但是framework如果build它分开的话没有错误吗?
这个pods或其他东西有什么问题吗?
我创建了一个动态可可框架,我希望在我的应用程序中使用它.
在为实际设备构建框架之后,我将其带到了应用程序.我只能在该设备上运行该应用程序.
当我尝试在模拟器上运行它时,框架文件无法识别.我收到错误消息: 'ViewController' is unavailable: cannot find swift for declaration for this class
我尝试构建iPhone 6模拟器的框架并在iPhone 6模拟器上运行应用程序,但同样的问题仍然存在.
如何创建/构建一个我可以带入任何应用程序并能够在模拟器和设备上使用它的框架?
将嵌入式框架与其他框架链接,并且required code signature missing在设备上构建和运行时不要将其他框架与您的应用程序相关联.
建立:
我的设置非常简单(Swift 2.3和Xcode Xcode 8.0; Build版本8S162m):
xcodebuildTOOLCHAINS=com.apple.dt.toolchain.Swift_2_3 carthage build --platform iOS问题:
一切似乎工作正常,直到我在设备上构建和运行应用程序.该应用程序已启动,并且该过程因以下Xcode错误而中止:
dyld: Library not loaded: @rpath/Other.framework/Other
Referenced from: /private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/My
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other: required code signature missing for '/private/var/containers/Bundle/Application/DCF0331F-FF23-43CF-AE79-B3857D5A6EE3/MyApp.app/Frameworks/My.framework/Frameworks/Other.framework/Other'
Run Code Online (Sandbox Code Playgroud)
我检查了Other.framework的签名,看起来对我来说很好.此外,
解决方案(解决方法)
将MyApp与Other.framework链接.可怕......这感觉很糟糕.
将完全相同的二进制 …
我们正在尝试在我们的静态框架中完全启用Bitcode,但是在将应用程序与框架集成时,尽管我们能够在模拟器或设备上构建它,但是在归档应用程序时收到以下错误。
ld: bitcode bundle could not be generated because '.framework/p-iOS(PTFWOperationPrepareTransaction.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '.framework/p-iOS' for architecture armv7
Run Code Online (Sandbox Code Playgroud)
我们已经验证了位码状态,otool -l Versions/A/p-iOS | grep __bitcode并且似乎已正确启用
。
谦虚的要求:
请检查以上屏幕截图中的设置,因为我们已经检查了所有与SO相关的查询,因此请不要将其作为参考。

另外,我们已经尝试使用静态库,框架和位码来解决问题。
提前致谢。
在存档我的应用程序时出现此错误.使用的框架是我自己的.所以我交叉检查.框架中的Bitcode已启用.不知道为什么我会遇到这个问题.这些是我的框架中的构建设置:
我按照这个链接但没有奏效.试图在框架的项目中设置-fembed-bitcode(不是目标,而是项目,因为建议在链接中)设置.
ios-frameworks ×10
ios ×7
xcode ×6
swift ×4
frameworks ×2
swift2 ×2
bitcode ×1
ios9 ×1
localization ×1
mqtt ×1
npm ×1
xcode4 ×1
xcode9 ×1
xcodebuild ×1