最近我正在学习NSUserDefaults,然后做了如下演示:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *activity_array = [NSMutableArray array];
NSMutableArray *movie_array = [NSMutableArray array];
[defaults setObject:activity_array forKey:@"activity"];
[defaults setObject:movie_array forKey:@"movie"];
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)
然后我尝试编写以下内容,我将在这篇文章的持续时间内调用"code2":
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSMutableArray *array = [userDefault objectForKey:@"activity"];
[array addObject:@"123"];
Run Code Online (Sandbox Code Playgroud)
演示仍然有效.
但是当我用以下代码替换"code2"时,演示崩溃了:
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSMutableArray *array = [userDefault objectForKey:@"movie"];
[array addObject:@"123"];
Run Code Online (Sandbox Code Playgroud)
如您所见,差异是关键.
为什么会崩溃?
我打算创建一个网站,在此之前我将创建一个数据库表.问题是如何正确地做到这一点.对不起,我是PHP和Mysql的新手.我只有一定数量的类别,所以这是我的数据库视图:
--------------------
Video_name Varchar
Video_loc Varchar
cat1 Boolean
cat2 Boolean
cat3 Boolean
cat4 Boolean
cat5 Boolean
cat6 Boolean
cat7 Boolean
--------------------
Run Code Online (Sandbox Code Playgroud)
我保持这样,因为1个视频可能属于2个或更多类别.但从长远来看,它将占用大量空间.如果视频属于cat2和cat5,则布尔值将为"1".但其他人也会有"0"的价值,这是浪费空间.
我怎么能以正确的方式做到这一点?BTW我见过Wordpress,它给类别一个唯一的ID然后在主表上它为多个类别指定了多个id,例如:它保持如下:
-----------------------
id | title | category |
1 | Lorem | 2,4,8,16 |
2 | Epsum | 2,9,8,20 |
3 | Losum | 2,4,9,5 |
4 | Eprum | 2,10,8,1 |
-----------------------
Run Code Online (Sandbox Code Playgroud)
我不明白它是怎么做到的.任何人都可以告诉我如何做到这一点或任何比我更好的想法吗?
我使用相同的验证功能来验证系统上的所有数据.它可以发送任何类型的数据.该函数既发送一个值进行验证,又发送一个查询来搜索数据库,以便为其验证值所需的正则表达式.
是否可以使用从数据库中提取的正则表达式验证值的类型?目前我正在使用从数据库中提取的相同正则表达式来验证前端和后端.
对于PHP,我preg_match用来测试值是否是布尔值.
对于JavaScript,我使用该test方法来验证值是否为布尔值.
我试过了:
$val = true;
preg_match("^(true|false)$", $val);
Run Code Online (Sandbox Code Playgroud)
但是,我无法在PHP和JavaScript中使用相同的正则表达式:
"^(true|false)$" = works in JS, fails in PHP
"^(0|1)$" = works in PHP, fails in JS
Run Code Online (Sandbox Code Playgroud)
为什么我用正则表达式做这个?因为这是系统目前的构建方式,我想保持这种方式.Boolean是许多可以传递给验证函数的一种情况.重新做大量工作不是一种选择.
同样,我重新使用相同的正则表达式来验证前端和后端.正则表达式从数据库中提取,并以字符串形式存储.系统已成功验证字符串,但我在前端验证与后端相同的布尔值时遇到问题.如果不重做大量的工作,我可以在我的正则表达式中实现什么样的简单更改,以便它可以验证字符串和布尔值?
我有一个关联数组:
array(
'0' => array(
'id' => 1,
'name' => 'one'
),
'1' => array(
'id' => 4,
'name' => 'two'
),
'2' => array(
'id' => 8,
'name' => 'three'
)
);
Run Code Online (Sandbox Code Playgroud)
我想item从其中删除数组的地方id = 4.
期望的输出:
array(
'0' => array(
'id' => 1,
'name' => 'one'
),
'1' => array(
'id' => 8,
'name' => 'three'
)
);
Run Code Online (Sandbox Code Playgroud)
问题:我应该使用什么函数来查找该元素并将其从数组中删除?
扩展和折叠功能目前工作正常,但我想修改功能,所以当我点击Expand 1,然后点击Expand 2,它Expand 1应该自动崩溃.这意味着只div允许一个扩展,而其他所有其他应保持折叠状态.
HTML:
<div class="container">
<div class="header"><span>Expand 1</span>
</div>
<div class="content">
<ul>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
</ul>
</div>
<div class="header"><span>Expand 2</span>
</div>
<div class="content">
<ul>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
<li>This is just some random content.</li>
</ul> …Run Code Online (Sandbox Code Playgroud)