zoukankan      html  css  js  c++  java
  • 07-IOSCore

    xmlplist取代了  数据库被coredata取代了

    一、Core Data 高级补充

        1. Core Data 本质是什么?操作数据库的数据

            ORM

            Object Relationship Mapping

     

            对象关系映射解决的问题是->对象 和 数据库之间的关系

           

            数据库:  Database

            专门用于存储、查询、增删改数据的地方

            从类型上分:

                关系型(最广泛)

                字典型         

     

            关系型数据库:

            用表去表达一个类型的数据,一个表里有很多条数据,每条数据的格式是一样的      

     

            CREATE TABLE Message {

                boolean fromMe

                INT type

                VARCHAR(30) content

                DATETIME time

            }

           

    SQL

            结构化查询语言

            用于查询

            SELECT * from Message

                    where fromMe = true

                    ordered by time

                   

            SQL(字符串)

            -----------> Database

            字符串<-----------

     

            数据库本身应该是和操作它的编程语言不相关

     

            MySQL            很简单很方便 - java / php

            SQLite             专门针对移动设备

            SQL server      微软出的 C C++ C# VB

            ORACLE           大型数据库

            Sliverlight -> Flash

            WPF -> Flex

             -> MXML

            Window

            NavigationWindow

            Line    

     

        2. 版本

            当你修改coredata的数据模型xcodedatam

            出现新版本的数据结构

            TRMessage

            type fromMe content

               

            type fromMe content createdTime readTime      

            Core Data Migration

            帮助你比较两个数据模型的区别

            手机已经安装并且运行的数据模型 和

            新版本程序带过来的新的数据模型

       

        3. 删除

            单实体 删除很简单

            多实体 删除很变态

     

    relationshipdeleteRule属性解析:

            Nullify     置空  删除群的时候 会删除掉 从群指向人的指针 那么 人指向群的引用置空

          Cascade 如果删除掉文件夹那么文件夹里的所有东西也就不再了。也相当于 级联删除 在删除板块 会删除掉版块->帖子 帖子也删了

            Deny     删除父版块时 如果发现有子版块 则删除不成功

     

        4. 深化Context

            Managed Object Context           跟查询相关的 栅栏

            Persistent Store Coordinator

            Persistent Object Store           跟存储相关的 圈

     

     

    二、 音频

        导入AVFoundation框架

        Audio & Video Foundation

        创建AVAudioPlayer 音频播放器

    常用属性:

    play      播放

    pause    暂停

    valume   音量

    currentTime 当前时间

    duration    歌曲总时间

     

    TMusic

    1. 点击播放能播放

        滑动进度条能更改歌曲播放进度

        滑动音量条能修改歌曲音量  

     

    2. 支持封面

    获取封面代码:

    //元数据 Metadata

       

        NSURL * fileURL = [NSURL fileURLWithPath:path];

        AVURLAsset * mp3Asset = [AVURLAssetURLAssetWithURL:fileURL

                                                    options:nil];

        for (NSString * format in [mp3Asset availableMetadataFormats]){

            for (AVMetadataItem * item in

                 [mp3Asset metadataForFormat:format]){

                NSString * key = item.commonKey;

               

                id map = item.value;

                if ([key isEqualToString:@"artwork"]) {

                    NSData * data = [map objectForKey:@"data"];

                    self.imageView.image = [UIImage imageWithData:data];

                } else {

                    NSLog(@" %@:%@", key, item.stringValue);

                }

            }

        }

        点击上下切 能换歌 使用currentTime

        歌曲音乐的路径是从TMusic对象中的path/filename

        属性中拼凑字符串获取的

     

        播放当前歌曲结束后,能够自动跳转到下一首歌播放,这里使用到代理中的一个方法:

    遵守协议 AVAudioPlayerDelegate

    self.player.delegate = self;

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{

       

        NSLog(@"播放完成");

       

    }

        如果自动跳转的时候,当前页面是播放列表页面/当前的组页面

        你的小绿条(正在播放的提示)需要变换位置  

     

        3. 视频播放

    导入MediaPlayer.framework框架

    - (IBAction)tap:(id)sender {

        NSURL *url = [[NSBundlemainBundle] URLForResource:@"product-design-animation-cn-20130712_848x480"withExtension:@"mp4"];

        self.player = [[MPMoviePlayerControlleralloc] initWithContentURL:url];

        self.player.view.frame = self.view.bounds;

        [self.viewaddSubview:self.player.view];

        [self.playerplay];

        self.player.fullscreen = YES;// 全屏

       

        // MPMoviePlayerWillExitFullscreenNotification : 退出全屏前

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(close:) name:MPMoviePlayerWillExitFullscreenNotificationobject:self.player];

    }

    -(void)close:(id)sender{

        [self.player.viewremoveFromSuperview];

        [[NSNotificationCenterdefaultCenter] removeObserver:selfname:MPMoviePlayerWillExitFullscreenNotificationobject:self.player];

    }

    单词、 

     

        Migration   迁移         Mai3 Ge. Rui1 Shen.

     

  • 相关阅读:
    Unity3D 开发之shader教程(浅谈光照之漫反射diffuse)
    游戏引擎浅析
    Unity3D 中的三个Update()方法
    Unity 游戏存档 PlayerPrefs类的用法
    unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)
    Unity 3D制作2D游戏的几种方法
    Unity3D 常用插件
    Unity3D协同程序(Coroutine)
    Unity中 动态加载 Resources.Load()和Asset Bundle 的区别
    Unity3D 游戏开发之内存优化
  • 原文地址:https://www.cnblogs.com/yangmx/p/3583129.html
Copyright © 2011-2022 走看看