Cs193p 2015年冬季/第10讲-破碎的Twitter软件包

Cs193p 2015年冬季/第10讲-破碎的Twitter软件包,cs193p,Cs193p,在观看第10讲iTunes视频的同时,尝试跟随并编写Smashtag项目 当我将加载的Twitter包添加到我的Smashtag项目中时,当我在TweetTableViewController中引用它时,XCode找不到Tweet类 由于上述问题,我将属于Twitter包的四个类分别添加到项目中。XCode找到了这四个类,但以这种方式添加它们会产生11个编译错误 我使用的是iOS 8.3版本之后的XCode版本6.3(6D570) 还有其他人遇到过这个问题吗 谢谢你阅读我的问题。 ~Lee我刚刚

在观看第10讲iTunes视频的同时,尝试跟随并编写Smashtag项目

当我将加载的Twitter包添加到我的Smashtag项目中时,当我在TweetTableViewController中引用它时,XCode找不到Tweet类

由于上述问题,我将属于Twitter包的四个类分别添加到项目中。XCode找到了这四个类,但以这种方式添加它们会产生11个编译错误

我使用的是iOS 8.3版本之后的XCode版本6.3(6D570)

还有其他人遇到过这个问题吗

谢谢你阅读我的问题。
~Lee

我刚刚参加了一个大型会议,为同一版本的Xcode修复Twitter包文件

似乎在这个版本的Swift中,常量('let x…')只能初始化一次,因此,如果在声明中为常量指定了一个值('let x=false'),则在init()函数中可能不会对其进行更改。Twitter包提供了一些常量初始值,但随后在init()函数中更改了这些值

我的解决方案是遵循当前版本的Apple Swift语言书中建议的样式:将(许多)常量声明为隐式展开选项,在init()函数中无条件地为它们赋值(该值可能为nil),然后测试它们是否为nil,如果是,则从init()返回nil

请参阅,单击“本页”并选择“可失败的初始值设定项”

另外,在TwitterRequest.swift中,我需要在对performTwitterRequest(请求,handler:handler)的两个调用中添加参数名“handler:”

作为常量初始化的一个示例,在MediaItem.swift中:

>

>


这可能不是最正确的(阅读:最佳实践)方法,但我将把它归结为完成课程所需的努力

我只是浏览了编译错误列表,并将相关属性改为
var
,而不是
let
<代码>常量无法更改,在新版本的
Swift
中,它们只能实例化一次。因此,为了不重写太多代码,我选择将某些属性
var
s替换为
let
s

我在iTunes U课程中发现的其他bug:

  • 命名的“handler:”参数需要在几个地方显式使用名称
  • 模拟器将显示“TwitterRequest:无法发现Twitter帐户类型”。直到您转到设置(模拟器内部)并设置Twitter帐户。此时,我必须重新启动设备,因为调用是在ViewDidLoad中进行的,因此仅在第一次加载视图时才调用。(或者,您可以从模拟器中的应用程序切换器关闭应用程序,然后以这种方式重新启动。)
下面是一个要点,其中包含更正后的代码,您可以将其用作与课程一起使用的Twitter软件包,并修复了上述错误(不包括Twitter帐户设置):


正如Christian R.Jimenez所说,“我在模拟iphone中打开了设置,添加了我的Twitter帐户。一切都很完美。”在中,我刚刚添加了我的Twitter帐户并进行了测试,它运行正常!

我在使用Swift 2.0和Xcode 7.2的Twitter软件包中遇到了类似的问题

我对Swift非常陌生,因此我所做的更改很可能不是最佳实践,但更新的文件确实有效:

在大多数情况下,我使用了Xcode建议的更改。我所做的两个较大的更改是:

  • 在Tweet.swift中,我更新了
    IndexedKeyword
    struct的init方法,使用
    advanceBy()
    而不是
    advance()
  • 在TwitterRequest.swift中,我更新了
    NSJSONSerialization
    的签名,以符合新的错误处理系统

  • Bill Evans,谢谢你对我的问题的迅速而全面的回答。到目前为止,我已经编译了User和MediaItem类,目前正在编写Tweet类。Bill Evans,你愿意分享你更新的Twitter包吗?非常感谢。mpetts,我非常感谢你分享你的代码。Beca利用你的慷慨,我能够完成第10课。一切都成功了!我和其他参加2015年冬季版iTunes课程的人欠你一份感激之情!没问题!我不得不自己解决这个问题,也遇到了同样的困境。祝你学习好运!感谢设置Twitter帐户的提示设置应用程序中的nt。现在我收到错误:“TwitterRequest:没有来自Twitter的响应。”这是一个访问错误,在plist中,我必须设置NSAppTransportSecurity并允许Twitter.com和来自其他资源的图片,需要单独解锁。
    ...
        public let aspectRatio: Double = 0
    ...
        init?(data: NSDictionary?) {
            var valid = false
            if let urlString = data?.valueForKeyPath(TwitterKey.MediaURL) as? NSString {
                if let url = NSURL(string: urlString) {
                    self.url = url
                    let h = data?.valueForKeyPath(TwitterKey.Height) as? NSNumber
                    let w = data?.valueForKeyPath(TwitterKey.Width) as? NSNumber
                    if h != nil && w != nil && h?.doubleValue != 0 {
                        aspectRatio = w!.doubleValue / h!.doubleValue
                        valid = true
                    }
                }
            }
            if !valid {
                return nil
            }
        }
    ...
    
    ...
        public let aspectRatio: Double
    ...
        init?(data: NSDictionary?) {
            if let urlString = data?.valueForKeyPath(TwitterKey.MediaURL) as? NSString {
                if let url = NSURL(string: urlString as String) {
                    self.url = url
                    let h = data?.valueForKeyPath(TwitterKey.Height) as? NSNumber
                    let w = data?.valueForKeyPath(TwitterKey.Width) as? NSNumber
                    if h != nil && w != nil && h?.doubleValue != 0 {
                        aspectRatio = w!.doubleValue / h!.doubleValue
                        return
                    }
                }
            }
            return nil
        }
    ...