2014-10-10 2 views
1

В StoryViewController.swift: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) 
     } 
     }) 
    }); 
    } 
} 

Могу ли я написать это правильно? Как я могу исправить ошибку: «Тип UInt8 doer не соответствует протоколу« NilLiteralConvertible »в StoryViewController.swift? Большое спасибо!

еще: я просто хочу проверить, пуст ли файл истории. И если это не так, покажите информацию в представлении. Код выше успешно работал до того, как выпущена версия Swift beta3. Я думаю, может быть, новый NilLiteralConvertible protocal вызывает эту ошибку.

/********************************************* ****/ Я загружаю этот проект от http://cdn5.raywenderlich.com/wp-content/uploads/2014/09/Grimm-Swift.zip как мое упражнение от bbs. Если вы запустите эту версию без каких-либо изменений, вы заметите ошибку выше. Спасибо создателю этого проекта. /************************************************ */

+1

Вы, вероятно, опуская то, что вызывает ошибку, потому что код выглядит хорошо, и (с некоторыми очевидными изменениями) она работает на детской площадке – Antonio

+0

Я думаю, что вам нужно расширить '{. ..} 'для нас –

+0

Хорошо, я добавил код в {...}. Благодаря! – OzzieChen

ответ

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, чтобы узнать больше о скоростном конвертируемом письме, вы можете прочитать недавнюю статью [Mattt Thompson] (http://nshipster.com/swift-literal-convertible/) –

+0

Это сработало! Но почему он может успешно работать, хотя я удаляю код, который вы мне сказали, когда я снова открываю проект ... В любом случае, спасибо вам помочь первокурснику, как я :) – OzzieChen

0

Заменить Class на class.

Если это не причина, отправьте больше кода.

+0

Моя ошибка, но ошибка все еще там. – OzzieChen

Смежные вопросы