Xcode Firebase просто записать данные - PullRequest
0 голосов
/ 01 мая 2018

Я написал этот код, потому что мне нужно приложение с двумя кнопками, и когда я нажимаю первую, я хочу записать video01 в моей FirebaseDB, а когда я нажимаю вторую, я хочу написать video02. Когда я компилирую код, я не вижу двух кнопок и мне кажется, что SIGABRT

ошибается

Вот мой код:

import Firebase
import UIKit

class ViewController: UIViewController {

    var refController: DatabaseReference!

    @IBAction func btt_video1(_ sender: Any) {
        refController.child("nowPlaying").setValue("video01")
    }
    @IBAction func btt_video2(_ sender: Any) {
        refController.child("nowPlaying").setValue("video02")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //configuring firebase

        FirebaseApp.configure()

        refController = Database().reference().child("parametri");
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

Вот моя ошибка:

2018-04-30 16:31:42.403230-0400 Remote Controller Client[26074:469999] 4.13.0 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40200000 started
2018-04-30 16:31:42.407953-0400 Remote Controller Client[26074:469999] 4.13.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled 
2018-04-30 16:31:42.444269-0400 Remote Controller Client[26074:469864] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010f2d01e6 __exceptionPreprocess + 294
    1   libobjc.A.dylib                     0x000000010e3d0031 objc_exception_throw + 48
    2   CoreFoundation                      0x000000010f3100bc _CFThrowFormattedException + 194
    3   CoreFoundation                      0x000000010f3746e2 -[__NSDictionaryM setObject:forKeyedSubscript:] + 1026
    4   Remote Controller Client            0x000000010c857470 +[FRepoManager createRepo:config:database:] + 273
    5   Remote Controller Client            0x000000010c83eb16 -[FIRDatabase ensureRepo] + 151
    6   Remote Controller Client            0x000000010c83e20e -[FIRDatabase reference] + 31
    7   Remote Controller Client            0x000000010c7b6da3 _T024Remote_Controller_Client04ViewB0C11viewDidLoadyyF + 131
    8   Remote Controller Client            0x000000010c7b6f44 _T024Remote_Controller_Client04ViewB0C11viewDidLoadyyFTo + 36
    9   UIKit                               0x000000010f8f1191 -[UIViewController loadViewIfRequired] + 1215
    10  UIKit                               0x000000010f8f15d4 -[UIViewController view] + 27
    11  UIKit                               0x000000010f7bf183 -[UIWindow addRootViewControllerViewIfPossible] + 122
    12  UIKit                               0x000000010f7bf894 -[UIWindow _setHidden:forced:] + 294
    13  UIKit                               0x000000010f7d262c -[UIWindow makeKeyAndVisible] + 42
    14  UIKit                               0x000000010f74643a -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4739
    15  UIKit                               0x000000010f74b62b -[UIApplication _runWithMainScene:transitionContext:completion:] + 1677
    16  UIKit                               0x000000010fb0de4a __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 866
    17  UIKit                               0x000000010fee0909 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
    18  UIKit                               0x000000010fb0da86 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 236
    19  UIKit                               0x000000010fb0e2a7 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 675
    20  UIKit                               0x000000011047f4d4 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 299
    21  UIKit                               0x000000011047f36e -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 433
    22  UIKit                               0x000000011016362d __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 221
    23  UIKit                               0x000000011035e387 _performActionsWithDelayForTransitionContext + 100
    24  UIKit                               0x00000001101634f7 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 223
    25  UIKit                               0x000000010fedffb0 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
    26  UIKit                               0x000000010f749f0c -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 515
    27  UIKit                               0x000000010fd1ca97 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 361
    28  FrontBoardServices                  0x00000001163932f3 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 331
    29  FrontBoardServices                  0x000000011639bcfa __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 225
    30  libdispatch.dylib                   0x0000000111ee7848 _dispatch_client_callout + 8
    31  libdispatch.dylib                   0x0000000111eece14 _dispatch_block_invoke_direct + 592
    32  FrontBoardServices                  0x00000001163c7470 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
    33  FrontBoardServices                  0x00000001163c712e -[FBSSerialQueue _performNext] + 439
    34  FrontBoardServices                  0x00000001163c768e -[FBSSerialQueue _performNextFromRunLoopSource] + 45
    35  CoreFoundation                      0x000000010f272bb1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    36  CoreFoundation                      0x000000010f2574af __CFRunLoopDoSources0 + 271
    37  CoreFoundation                      0x000000010f256a6f __CFRunLoopRun + 1263
    38  CoreFoundation                      0x000000010f25630b CFRunLoopRunSpecific + 635
    39  GraphicsServices                    0x0000000115019a73 GSEventRunModal + 62
    40  UIKit                               0x000000010f74d0b7 UIApplicationMain + 159
    41  Remote Controller Client            0x000000010c7b8497 main + 55
    42  libdyld.dylib                       0x000000010f103955 start + 1
    43  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

Кто-нибудь может мне помочь ??

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Проблема в том, что в какой-то момент nil записывается в недопустимое место и / или Firebase не настроен должным образом.

Важным этапом устранения неполадок является то, что код не будет компилироваться, что означает, что Firebase, вероятно, не настроен правильно.

Две вещи, на которые стоит взглянуть:

1) Вы неправильно инициализируете ссылку на базу данных.

Что у вас есть

refController = База данных (). Reference (). Child ("параметр");

и должно быть

self.refController = Database.database().reference()

затем, позже в коде вы можете сделать

let paraRef = self.refController.child("parametri")
let nowPlayingRef = paraRef.child("nowPlaying")
nowPlayingRef.setValue("video 1")

, что приведет к такой структуре

firebase_root
   parametri
      nowPlaying: "video 1"

2) В приложении «Делегат» сделайте это

class AppDelegate: UIResponder, UIApplicationDelegate {

   var window: UIWindow?
   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
       FirebaseApp.configure()
       return true
   }
0 голосов
/ 01 мая 2018

setValue занимает словарь

let video1 = ["Video":"Video1"]
refController.child("nowPlaying").setValue(video1)

или

let video2 = ["Video":"Video2"]
refController.child("nowPlaying").setValue(video2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...