小编Tim*_*ean的帖子

dyld:未加载库:@ rpath/libswiftSwiftOnoneSupport.dylib

我已经构建了一个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并找到了类似的报告并尝试了其中列出的修复程序,包括:

  • 清除我的DerivedData文件夹
  • 重新启动Xcode和iPhone模拟器
  • 确保Always Embed Swift Standard Libraries = YES在我的框架和我的应用程序的构建设置中设置
  • 确保Enable Bitcode=NO在我的框架和我的应用程序的构建设置中设置
  • 确保Runpath Search Paths被设置为@executable_path/Frameworks,无论是在我的框架和我的应用程序的构建设置
  • 将我的Xcode安装中的所有libswift文件复制到项目中的本地副本中,并添加了自定义构建阶段以将这些文件复制到frameworks文件夹中.

在每种情况下,当我尝试运行我的应用程序时,我都会遇到相同的错误.

  • Xcode版本8.1(8B62)
  • Apple Swift 3.0.1版(swiftlang-800.0.58.6 clang-800.0.42.1)

xcode ios swift

23
推荐指数
4
解决办法
1万
查看次数

将排序描述符应用于从模板创建的NSFetchRequest

我在我的核心数据模型中定义了一个名为"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方法时发生了这种崩溃.我无法弄清楚为什么会这样.

对这里发生的事情的任何解释?在检索需要排序的数据时,我应该使用另一种方法吗?

core-data objective-c

19
推荐指数
1
解决办法
5062
查看次数

设置XCode 4工作区以为Mac和iOS构建库

我正在尝试在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库项目之间共享库代码?

xcode4

7
推荐指数
1
解决办法
2168
查看次数

无法为泛型类型的子类调用初始值设定项

更新:问题和标题已根据对初始问题作出的更改进行了重述.


我有一个基类,它实现了用于创建新实例的泛型类方法.该类方法的简化逻辑如下

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)

generics swift

6
推荐指数
1
解决办法
2357
查看次数

在Angular 2中创建可选的嵌套表单组

我试图在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实现此模型?

reactive-forms angular

6
推荐指数
1
解决办法
1354
查看次数

NSCFData isResizable崩溃?

我目前在控制台中收到此崩溃日志:

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)

有谁知道这意味着什么?可能是什么原因造成的?

谢谢!

crash console objective-c ios

5
推荐指数
1
解决办法
4310
查看次数

插入新表行后,UITableView节页脚移动

我有一个显示项目列表的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)

uitableview uikit ios

5
推荐指数
1
解决办法
2243
查看次数

了解如何初始化 Vapor 4 存储库

我正在尝试使用 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)

这里似乎 …

vapor vapor-fluent

5
推荐指数
1
解决办法
251
查看次数

如何在LISP中交换2个列表中的元素?

给定2个列表,如何生成第3个列表的输出,该列表的元素为L1和L2的交错集合?如果长度不均匀,则应插入零孔.在第二个注释中,我如何反转列表?我是LISP的新手,只是修改现有的代码......我真的很想得到一个很好的解释,而不仅仅是代码.

common-lisp

4
推荐指数
1
解决办法
3777
查看次数

NSManagedObject的willSave没有被调用无效对象

我有一个带有updatedOn属性的NSManagedObject类.我希望实现逻辑以在类的willSave方法中设置它的值.当我尝试这样做时,我发现在我的这个类的实例上从未调用过willSave.

经过一些调查,我确定willSave没有为新创建的实例调用该方法,其中updatedOn没有初始化为任何值.由于此属性未设置为可选,因此验证失败,显然willSave只有在实例有效时才会调用该方法.

我的问题是:做这种事是否有最好的做法?我是否需要使updatedOn属性可选以解决此问题?或者我应该实现awakeFromInsert我的类的方法在那里设置初始值,然后在willSave最终调用方法时覆盖该值?或者是否有一些更简单的方法更有意义?

core-data objective-c iphonecoredatarecipes ios

4
推荐指数
1
解决办法
854
查看次数

当我不为Core Data标量属性编写访问器方法时会发生什么?

我正在使用几个用于生成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子类之前,我很想了解这里发生了什么......

core-data objective-c nsmanagedobject

1
推荐指数
1
解决办法
774
查看次数