现在我想将我的ObjC框架迁移到Swift,我收到以下错误:
include of non-modular header inside framework module 'SOGraphDB'
Run Code Online (Sandbox Code Playgroud)
引用是一个头文件,它只定义一个协议,我在一些类中使用这个头文件来使用这个协议.
似乎与模块功能有关,但目前还不太清楚如何修复,你知道一个解决方案吗?
更新:
这是一个Swift编译器错误.
更新2:
快速修复(但不解决根本原因)是将以下设置设置为yes:CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
我正在尝试从我正在编写的iOS 8框架中加载图像(在Swift中).我正在使用Xcode 6 Beta 6
如果图像存储在我的框架中,则此代码不起作用(即加载图像)Images.xcassets
:
let image = UIImage(named: "Background.png")
Run Code Online (Sandbox Code Playgroud)
如果图像存储在Images.xcassets
主机应用程序(使用框架)中,则正确加载图像(从框架内的代码).
我可以看到框架Images.xcassets
包含在Copy Bundle Resources
阶段中.
我也使用故事板文件作为框架中的资源; 这适当加载.
我已经尝试重命名框架的Images.xcassets以避免与主机应用程序发生某种命名冲突,但这也不起作用.
这是我天真的第一次密码:
var httpUrlResponse: NSHTTPURLResponse? // = (...get from server...)
let contentType = httpUrlResponse?.allHeaderFields["Content-Type"]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了这个代码的各种派生,但是我一直得到编译器警告/错误,这些警告/错误与allHeaderFields属性的NSDictionary类型之间的基本阻抗不匹配以及我想要获得String或可选String的愿望有关.
只是不确定如何强制这些类型.
我有一个基于故事板的应用程序,从德语到英语本地化.
除了UITextViews中的所有文本外,UI中的大多数字符串都是从Main.strings文件中正确提取的,尽管它们确实出现在Main.strings文件中:
/* Class = "IBUITextView"; text = "Die Futtermenge kann bei Hunden ab 12 Monaten anhand des Schiebreglers von 2% auf 5% des Körpergewichts verstellt werden. Als Standart empfehlen wir 2% Futter vom Körpergewicht Ihres Hundes. Je nach Aktivität kann das abweichen. Wenn Sie bereits eine hohe Menge an Futter geben und Sie der Meinung sind, es ist nicht ausreichend, erhöhen Sie die Fettmenge im Futter. Mehr unter den Fragen & Antworten.\n \nFür Welpen und Junghunde gilt:\nWelpen 8 - …
Run Code Online (Sandbox Code Playgroud) 我正在尝试弄清楚如何在使用System.Net.WebClient类时强大地处理代理身份验证错误(HTTP 407状态代码).
在该领域,我们看到许多用户接收到407代理身份验证WebException,但我不确定什么是一个好的默认策略.在.Net 2.0/3.5中,代理身份验证设置应该从Internet Explorer系统设置继承.Firefox,Opera和Chrome使用这些相同的设置.
这是我们使用的基本代码:
using System.Net;
string url = "http://www.mysite.com";
WebClient webClient = new WebClient();
byte[] data = webClient.DownloadFile(url);
Run Code Online (Sandbox Code Playgroud)
当此代码失败时,我们打开用户的浏览器并将其发送到帮助页面.从我们的网络日志中,我们知道这些客户可以在其浏览器中成功连接.也许他们在进入我们的帮助页面之前手动输入他们的代理用户名和密码?我们不知道.
似乎我们可以使用WebClient.UseDefaultCredentials,但是如果WebClient正在使用系统设置,这似乎是多余的.
任何帮助表示赞赏.
我正试图从Swift调用CCKeyDerivationPBKDF.
我在Project-Bridging-Header.h中导入了所需的标题:
#import <CommonCrypto/CommonKeyDerivation.h>
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,桥接标题似乎可以正常导入我的项目中的其他Objective C代码).
在Xcode中,我可以从我的.swift文件跳转到这里显示的定义:
int
CCKeyDerivationPBKDF( CCPBKDFAlgorithm algorithm, const char *password, size_t passwordLen,
const uint8_t *salt, size_t saltLen,
CCPseudoRandomAlgorithm prf, uint rounds,
uint8_t *derivedKey, size_t derivedKeyLen)
Run Code Online (Sandbox Code Playgroud)
最后,当我尝试这样调用函数时:
let result = CCKeyDerivationPBKDF(CCPBKDFAlgorithm(kCCPBKDF2), NSString(password).UTF8String, size_t(passwordLength), UnsafePointer<UInt8>(salt.bytes), size_t(salt.length), CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA256), uint(actualRoundCount), UnsafeMutablePointer<UInt8>(derivedKey.mutableBytes), size_t(derivedKey.length));
Run Code Online (Sandbox Code Playgroud)
...我得到这个编译器错误:
无法使用类型'(CCPBKDFAlgorithm,UnsafePointer,size_t,UnsafePointer,size_t,CCPseudoRandomAlgorithm,uint,UnsafeMutablePointer,size_t)的参数列表调用'init'
我相信所有演员阵容都是正确的(实际上编译器错误帮助我识别每个参数的每个问题) - 这让我觉得编译器理解我调用CCKeyDerivationPBKDF的意图.
但是,在所有其他转换错误消失后,编译器会感到困惑并认为我正在尝试使用初始化程序构造一个类.
希望有人能告诉我我的方式的错误.
(Xcode 6 beta 7)
根据要求,上下文中的完整代码:
class func generateAesKeyForPassword(password: String, salt: NSData, roundCount: UInt?, error: NSErrorPointer) -> (key: NSData, actualRoundCount: UInt)?
{
let derivedKey = NSMutableData(length: kCCKeySizeAES256)
let passwordLength = size_t(password.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
var …
Run Code Online (Sandbox Code Playgroud) 我有一个使用Xcode 7构建的Swift框架.一切正常,现在我想添加国际化/本地化支持.
我已经回顾了WWDC 2014视频"使用Xcode 6进行本地化"(https://developer.apple.com/videos/wwdc/2014/),该视频讨论了本地化应用程序.
但是,看起来我不能"使用Base Internationalization"来在我的框架项目中本地化我的故事板.当我尝试启用"使用基础国际化"项目设置时,弹出对话框显示资源文件的空列表.
(请注意,我可以选择"导出本地化..."Xcode菜单选项,以导出在代码中使用NSLocalizedString定义的字符串.)
Framework项目是否需要一些不同的东西来支持故事板资源的国际化?
我在Swift框架中使用CommonCrypto - 它已经运行了一年多了.
我使用了这里找到的解决方案:在Swift框架中导入CommonCrypto
具体来说,为了从Swift框架引用CommonCrypto,我不得不:
module.map
在CommonCrypto
我的框架的Xcode项目旁边的文件夹中创建一个文件.module.map
内容:
module CommonCrypto [system]
{
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
link "CommonCrypto"
export *
}
Run Code Online (Sandbox Code Playgroud)
CommonCrypto
$(SDKROOT)/usr/lib/system
import CommonCrypto
这很好用; 有点复杂 - 但它奏效了.
但是,在Xcode 7.3 beta 1(7D111g)中,此技术不再有效.
它似乎libcommonCrypto.tbd
已从$(SDKROOT)/usr/lib/system
Xcode-beta.app中删除:我无法在iPhoneOS SDK文件夹结构下找到它.
所以我得到这些错误:
ld:警告:找不到选项'-L/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/usr/lib/system'ld的目录:ld:library找不到架构arm64 clang的-lCommonCrypto:错误:链接器命令失败,退出代码为1(使用-v查看调用)
如果疯狂的模块地图业务被更简单的东西取代,那将是很棒的.比如说,只是使用import CommonCrypto
在任何情况下,我不知道如何解决这个问题,所以任何帮助都表示赞赏.
如果解决方案与上一个问题中找到的解决方案大不相同,我在这里要求提出一个新问题,尽管我很欣赏这可能不合适.
我已经将UITableViewCell子类化为创建一个带有按钮和2个标签的自定义单元格.使用Dave Mark的Beginning iPhone Development中概述的模式从xib加载单元定义.这是基本代码:
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MarketItemCustomCell" owner:self options:nil];
for (id oneObject in nib)
{
if ([oneObject isKindOfClass:[MarketItemCustomCell class]])
{
cell = (MarketItemCustomCell *)oneObject;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
标签和按钮按预期显示,但不遵守缩进级别.我已经实现了如下所示的indentationLevelForRowAtIndexPath,但是单元格仍然一直向左对齐.
- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
{
<snip/>
return 5;
}
Run Code Online (Sandbox Code Playgroud)
请注意,当我不使用自定义单元格时,缩进级别正常工作.
任何提示?
我无法在XtraGrid的GridControl中获取单击单元格的列名.我怎样才能做到这一点?我正在处理GridView.Click
事件.
swift ×5
ios ×3
commoncrypto ×2
frameworks ×2
localization ×2
xcode7 ×2
.net ×1
c# ×1
content-type ×1
devexpress ×1
indentation ×1
ios8 ×1
iphone ×1
objective-c ×1
proxy ×1
swift2 ×1
uistoryboard ×1
uitableview ×1
uitextview ×1
webclient ×1
winforms ×1
xtragrid ×1