2016-05-10 3 views
0

Я создал счетчик, и мне удалось сохранить и загрузить эти данные. Проблема в том, что «var counter = 0», поэтому, когда я нажимаю счетчик вверх (+1) вместо перехода на следующий номер, он возвращается к 0, потому что переменная установлена ​​на 0. heres мой кодInt To String Swift

class ReminderClass: NSViewController { 


@IBOutlet var Count: NSTextField! 

    override func viewDidLoad() { 
    readStats() 
    super.viewDidLoad() 

} 

func readStats() -> (NSString?){ 
    let location = NSString(string:"location to my file").stringByExpandingTildeInPath 
    let fileContent = try? NSString(contentsOfFile: location, encoding: NSUTF8StringEncoding) 
    print(fileContent) 
    Count.stringValue = (fileContent?.stringByExpandingTildeInPath)! 
    fileContent?.stringByReplacingOccurrencesOfString(Count.stringValue, withString: Count.stringValue) 
    return fileContent 
} 

var counter = 0 //thats the problem 
var counterfind = "" 

@IBAction func PlusOne(sender: AnyObject) { 
    counter = counter + 1 
    Count.stringValue = NSString(format: "%i", counter) as String 
} 

@IBAction func MinusOne(sender: AnyObject) { 
    counter = counter - 1 
    Count.stringValue = NSString(format: "%i", counter) as String 
} 

@IBAction func save(sender: AnyObject) { 
    print(Count.stringValue) 
    let data = NSString(string:Count.stringValue) 
    let destPath = "path to my file" 
    _ = NSFileManager.defaultManager() 
    do { 
     try data.writeToFile(destPath, atomically: true, encoding: NSUTF8StringEncoding) 
    } catch let error as NSError { 
     print("Error: \(error)") 
    } 

    print(counter) 
    self.view.window?.close() 

} 
+1

Добавьте в свой код заявления о печати. Для отладки вы можете либо выполнять контрольные точки, либо просто добавлять простые инструкции печати, чтобы проверять значения по мере запуска кода и запускать функции. Я бы удостоверился, что метод даже привязан к кнопке и вызван. – JohnV

+0

Почему вы устанавливаете счетчик на ноль, если вам не нужен нуль? –

+0

Я хочу, чтобы счетчик равнялся значению текстового поля «count». Но я попробовал несколько способов, и xcode говорит, что переменная не может быть использована в этом классе. – Nate

ответ

1

Спасибо всем за помощь мне с небольшим вопросом у меня был с моим первым приложением макинтоша. Мне удалось выяснить проблему. Это теперь мой код:

class ReminderClass: NSViewController { 




@IBOutlet var Count: NSTextField! 

    override func viewDidLoad() { 
    readStats() 
    super.viewDidLoad() 

} 



func readStats() -> (NSString?){ 
    let location = NSString(string:"path-to-file").stringByExpandingTildeInPath 
    let fileContent = try? NSString(contentsOfFile: location, encoding: NSUTF8StringEncoding) 
    print(fileContent) 
    Count.stringValue = (fileContent?.stringByExpandingTildeInPath)! 
    fileContent?.stringByReplacingOccurrencesOfString(Count.stringValue, withString: Count.stringValue) 
    return fileContent 
} 



    @IBAction func PlusOne(sender: AnyObject) { 
    let counter : String = Count.stringValue 
    var num : Int? = Int(counter) 
    num = num! + 1 
    Count.stringValue = NSString(format: "%i", num!) as String 
    } 

@IBAction func MinusOne(sender: AnyObject) { 
    let counter : String = Count.stringValue 
    var num : Int? = Int(counter) 
    num = num! - 1 
    Count.stringValue = NSString(format: "%i", num!) as String 
    } 


@IBAction func save(sender: AnyObject) { 
    print(Count.stringValue) 
    let data = NSString(string:Count.stringValue) 
    let destPath = "path-to-file" 
    _ = NSFileManager.defaultManager() 
    do { 
     try data.writeToFile(destPath, atomically: true, encoding: NSUTF8StringEncoding) 
    } catch let error as NSError { 
     print("Error: \(error)") 
    } 

    self.view.window?.close() 

} 

Спасибо всем снова! :)

0

Try установки var counter = Int()

+0

ok спасибо, я попробую, чтобы позже я не на своем компьютере прямо сейчас – Nate

+0

Хорошо, дайте мне знать, если это сработает! –

+0

var counter = Int() не работает :( – Nate

0

Попробуйте использовать этот счетчик var: Int! = 0