我已经构建了一个Swift框架,现在我正在尝试构建一个将使用该框架的Swift iOS应用程序.我收到这个错误:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我搜索了SO并找到了类似的报告并尝试了其中列出的修复程序,包括:
Always Embed Swift Standard Libraries = YES在我的框架和我的应用程序的构建设置中设置Enable Bitcode=NO在我的框架和我的应用程序的构建设置中设置Runpath Search Paths被设置为@executable_path/Frameworks,无论是在我的框架和我的应用程序的构建设置在每种情况下,当我尝试运行我的应用程序时,我都会遇到相同的错误.
我在我的核心数据模型中定义了一个名为"RemainingGaneProjections"的获取请求.我想执行该获取请求并按实体的某个属性对结果进行排序.我的代码看起来像这样:
NSFetchRequest *projectionsRequest = [model fetchRequestTemplateForName:@"RemainingGameProjections"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"confidence" ascending:NO];
[projectionsRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此代码时,它会崩溃并显示以下消息:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't modify a named fetch request in an immutable model.'
Run Code Online (Sandbox Code Playgroud)
我在调试器中确认当我在NSFetchRequest上执行setSortDescriptors方法时发生了这种崩溃.我无法弄清楚为什么会这样.
对这里发生的事情的任何解释?在检索需要排序的数据时,我应该使用另一种方法吗?
我正在尝试在XCode工作区内构建几个应用程序:一个应用程序将是一个iOS应用程序,另一个应用程序将是一个Mac OS X应用程序.我希望在应用程序的两个版本中都包含一组特定的类.我正在努力弄清楚什么样的项目结构最能支持一些共享的代码,一些特定于iOS应用程序,一些特定于Mac应用程序.是否有最佳实践在XCode或XCode 4中专门做这种事情?
我应该为共享代码创建一个库项目,并为该库的iOS和Mac OS X版本创建2个不同的目标吗?内置项目模板似乎要我选择Mac OS X库或iOS库,我不确定基于这些模板之一的项目是否适用于两个目标都很容易.
我应该为iOS库,Mac OS X库,iOS应用程序和Max OS X应用程序创建不同的项目吗?在这种情况下,如何轻松地在iOS库和Mac OS X库项目之间共享库代码?
更新:问题和标题已根据对初始问题作出的更改进行了重述.
我有一个基类,它实现了用于创建新实例的泛型类方法.该类方法的简化逻辑如下
class MyBaseClass {
required init(_ record:MyRecordType) {
println("Entered MyBaseClass.init")
// Initialize base class from record
}
class func retrieveInstance<T:MyBaseClass>(name:String, callback:(T) -> ()) {
let myRecord:MyRecordType = ... // Perform fetch to get a record for name
let result = (T.self as T.Type)(myRecord) // Code currently crashes with BAD_ACCESS at this line
callback(result)
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用如下所示的逻辑实现此基类的子类
class MySubClass : MyBaseClass {
required init(_ record:MyRecordType) {
println("Entered MySubClass.init")
// Initialize subclass from record
super.init(record)
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试调用泛型类方法
class AnotherClass { …Run Code Online (Sandbox Code Playgroud) 我试图在Angular 2中实现一个模型驱动的表单.我的数据模型的结构如下:
archive (FormGroup)
name (FormControl)
description (FormControl)
connection (FormGroup)
url (FormControl)
authentication (FormGroup)
username (FormControl)
password (FormControl)
Run Code Online (Sandbox Code Playgroud)
在此数据模型中,顶级名称是必需的,但描述字段是可选的.我可以应用必需的验证器来命名,并省略描述中的验证器.
对于连接,我希望它是可选的,但如果存在连接,则其URL成为必需.类似地,对于连接的身份验证模型:它是可选的,但如果存在,则需要用户名和密码.
我试图了解如何设置验证器来强制执行这些规则.我试过从连接表单组中省略任何验证器,但这似乎要求我建立连接.我已经看过在线教程,解释了如何在嵌套表单组上实现自定义验证,但没有描述如何使整个嵌套表单组可选.
有没有一种直接的方法来使用Angular 2 FormGroup实现此模型?
我目前在控制台中收到此崩溃日志:
2011-08-23 19:18:40.064 App[1697:707] -[__NSCFData _isResizable]: unrecognized selector sent to instance 0x11f1c0
2011-08-23 19:18:40.075 App[1697:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData _isResizable]: unrecognized selector sent to instance 0x11f1c0'
Run Code Online (Sandbox Code Playgroud)
有谁知道这意味着什么?可能是什么原因造成的?
谢谢!
我有一个显示项目列表的UITableView.表视图控制器具有一组项,这些项在响应来自Web服务的响应时异步更新.这是我的一个例子(在Swift中):
class MyTableViewController : UITableViewController {
var items: [ItemClass] = []
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("RootCell", forIndexPath: indexPath) as UITableViewCell
if indexPath.section == 0 {
let item = items[indexPath.row]
cell.textLabel!.text = item.name
}
else if indexPath.section == 1 {
// Another section not shown here
}
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这个表的每个部分都有一个带有按钮的页脚,所以我也包括这个:
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let button = UIButton.buttonWithType(.System) as UIButton
button.setTitle("Add", forState:UIControlState.Normal)
if section …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Repository 模式将一些代码从 Vapor 3 迁移到 Vapor 4。我已经阅读了 Vapor 4文档中有关此特定模式的文档,我想我对它的大部分了解。
然而,我没有得到的一件事是在Application扩展中设置存储库工厂的方式。文档中的示例显示了这一点:
extension Application {
private struct UserRepositoryKey: StorageKey {
typealias Value = UserRepositoryFactory
}
var users: UserRepositoryFactory {
get {
self.storage[UserRepositoryKey.self] ?? .init()
}
set {
self.storage[UserRepositoryKey.self] = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我正确阅读了 getter 方法(我可能不是 - 我离 Swift 专家还很远),UserRepositoryFactory将创建一个新的结构实例并在app.users引用时返回。但是,当时似乎没有self.storage[UserRepositoryKey.self]以任何方式更改的内容。因此,如果我碰巧app.users连续访问两次,我会得到 2 个不同的实例返回给我,并且self.storage[UserRepositoryKey.self]将保持设置为nil.
按照文档中的其余示例代码,它似乎定义make了工厂在配置应用程序时将使用的函数,如下所示:
app.users.use { req in
DatabaseUserRepository(database: req.db)
}
Run Code Online (Sandbox Code Playgroud)
这里似乎 …
给定2个列表,如何生成第3个列表的输出,该列表的元素为L1和L2的交错集合?如果长度不均匀,则应插入零孔.在第二个注释中,我如何反转列表?我是LISP的新手,只是修改现有的代码......我真的很想得到一个很好的解释,而不仅仅是代码.
我有一个带有updatedOn属性的NSManagedObject类.我希望实现逻辑以在类的willSave方法中设置它的值.当我尝试这样做时,我发现在我的这个类的实例上从未调用过willSave.
经过一些调查,我确定willSave没有为新创建的实例调用该方法,其中updatedOn没有初始化为任何值.由于此属性未设置为可选,因此验证失败,显然willSave只有在实例有效时才会调用该方法.
我的问题是:做这种事是否有最好的做法?我是否需要使updatedOn属性可选以解决此问题?或者我应该实现awakeFromInsert我的类的方法在那里设置初始值,然后在willSave最终调用方法时覆盖该值?或者是否有一些更简单的方法更有意义?
我正在使用几个用于生成NSManagedObject子类的Core Data实体,当我生成这些类时,我选择了"使用原始数据类型的标量属性"选项.正如所料,整数属性被声明为int16_t属性,浮点float属性在生成的接口中被声明为属性:
@interface TeamStats:NSManagedObject
@property (nonatomic) int16_t pointsScored;
@property (nonatomic) float winPercentage;
@end
Run Code Online (Sandbox Code Playgroud)
在为此接口生成的实现中,我看到这些属性声明为@dynamic:
@implementation TeamStats
@dynamic pointsScored;
@dynamic winPercentage;
@end
Run Code Online (Sandbox Code Playgroud)
现在,根据Core Data文档,我应该为这些标量属性编写访问器方法,因为Core Data无法为我生成它们:
您可以将属性声明为标量值,但对于标量值,Core Data无法动态生成访问器方法 - 您必须提供自己的实现(请参阅"托管对象访问器方法"(第44页)).Core Data自动合成原始访问器方法(primitiveLength和setPrimitiveLength :),但您需要声明它们以禁止编译器警告.
这一切都是有道理的,我可以看到很多SO帖子询问如何编写这些访问器方法,并提供了很多好的答案.
我无法弄清楚的是:我编写了这段代码并在我阅读文档中的这个细节之前就开始使用它,所以我从未编写任何访问器方法.我只是在我的类实现中有@dynamic声明.尽管没有编写我应该需要的访问器方法,代码似乎工作得很好.我已经创建了这个NSManagedObject子类的实例.我已经发送了此类的实例setPointsScored:和pointsScored消息,并将生成的实例保存到其持久性存储中.一切似乎都有效.
我在这里错过了什么?是否存在生成的默认实现,尽管Core Data文档说明了什么?是否会出现我当前的代码无法正常工作的情况?在编写更多NSManagedObject子类之前,我很想了解这里发生了什么......
ios ×4
objective-c ×4
core-data ×3
swift ×2
angular ×1
common-lisp ×1
console ×1
crash ×1
generics ×1
uikit ×1
uitableview ×1
vapor ×1
vapor-fluent ×1
xcode ×1
xcode4 ×1