2014-10-10 114 views
1

在StoryViewController.swift:雨燕NilLiteralConvertible“错误:可选类类型

var story :Story? 

if story != nil {...}// ERROR: Type UInt8 doer not conform to protocol 'NilLiteralConvertible' 

在Story.swift:

class Story { 
     var title: String 
     var content: String 

     init(title: String, content: String) { 
     self.title = title 
     self.content = content 
     } 

     func description() -> String { 
     return title 
     } 


     class func loadStories(completion: ((Array<Story>?, NSErrorPointer) -> Void)!) { 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { 
      var error: NSErrorPointer = nil 
      let path = NSBundle.mainBundle().bundlePath 
      let manager = NSFileManager.defaultManager() 

      var stories = [Story]() 

      if let contents = manager.contentsOfDirectoryAtPath(path, error: error) { 
      error = nil 

      for file in contents { 
       if file.hasSuffix(".grm") { 
       let filePath = path.stringByAppendingPathComponent(file as String) 
       let title = file.stringByDeletingPathExtension 
       let content = NSString(contentsOfFile: filePath, encoding: NSUTF8StringEncoding, error: error) 

       let story = Story(title: title, content: content) 
      if error != nil { 
       break 
      } 

      stories.append(story) 

      error = nil 
      } 
     } 
     } 

     stories.sort({ a, b in 
     a.title < b.title 
     }) 

     dispatch_async(dispatch_get_main_queue(), { 
     if error != nil { 
      completion(nil, error) 
     } else { 
      completion(stories, nil) 
     } 
     }) 
    }); 
    } 
} 

难道我写的是正确的?我怎样才能修复错误:“在StoryViewController.swift中输入UInt8 doer不符合协议'NilLiteralConvertible'”?非常感谢!

更多:我只是想检查故事文件是否为空。如果不是,请在视图中显示信息。上面的代码在Swift beta3发布之前成功运行。我猜可能是新的NilLiteralConvertible协议引起这个错误。

/********************************************* ****/ 我从http://cdn5.raywenderlich.com/wp-content/uploads/2014/09/Grimm-Swift.zip下载这个项目作为我的练习从一个bbs。如果你没有任何修改就运行这个版本,你会注意到上面的错误。感谢这个项目的创造者。 /************************************************ */

+1

你可能忽略什么原因造成的错误,因为该代码看起来不错,(有一些明显的改进),它可以在操场 – Antonio 2014-10-10 08:59:03

+0

我认为你需要扩大'{。 ..}'对于我们 – 2014-10-10 09:07:39

+0

好的,我在{...}中添加了代码。谢谢! – OzzieChen 2014-10-10 09:12:49

回答

0

enter image description here使用本

var story: Story? 
story = Story (title: "Stack", content: "overflow") 

if story != nil { 
    println("It's not nil!") 
} 
else { 
    println("It's nil!") 
} 
+0

@OzzieChen了解更多关于swift文字转换的信息你可以阅读[Mattt Thompson]最近的文章(http://nshipster.com/swift-literal-convertible/) – 2014-10-10 10:08:23

+0

它的工作原理!但是,为什么它可以成功运行,虽然我删除了当我重新打开项目时告诉我的代码....无论如何,谢谢你帮助像我这样的新生:) – OzzieChen 2014-10-10 11:29:42

0

Class替换为class

如果这不是原因,请发布更多的代码。

+0

我的错误,但错误仍然存​​在。 – OzzieChen 2014-10-10 08:59:18